九度OJ题目1083:特殊乘法

来源:互联网 发布:mac搭建lamp 编辑:程序博客网 时间:2024/04/30 23:49
题目1083:特殊乘法

时间限制:1 秒

内存限制:32 兆

特殊判题:

题目描述:

写个算法,对2个小于1000000000的输入,求结果。

特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5

输入:

 两个小于1000000000的数

输出:

 输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。

样例输入:
123 45
样例输出:
54
来源:
2010年清华大学计算机研究生机试真题 
方法一:
#include <stdio.h>#include <string.h> int main(){char a[11],b[11]; //保存输入的两个整数while(scanf("%s %s",a,b)!=EOF){int ans=0;  //累加变量for(int i=0;a[i]!=0;i++)  //遍历a中每一个字符,直到a字符串结尾for(int j=0;b[j]!=0;j++)  //遍历b中每一个字符,直到b字符串结尾ans += (a[i]-'0')*(b[j]-'0'); //计算a,b中每一个字符所代表的数字两两乘积的和printf("%d\n",ans); //输出答案}return 0;}/**************************************************************     Problem: 1083     User: zpy    Language: C++     Result: Accepted     Time:0 ms     Memory:1020 kb ****************************************************************/  

方法二:
#include <stdio.h>#include <math.h>int main(){int a,b; //保存两个整数的变量while(scanf("%d %d",&a,&b)==2){ //输入两个整数int m=a%10,n=b%10;for(int i=2;i<=9;i++){int t=pow(10,i-1);m += (a/t)%10; //m为a的各个位的数之和n += (b/t)%10; //n为b的各个位的数之和}printf("%d\n",m*n); //输出结果}return 0;}/**************************************************************     Problem: 1083     User: zpy    Language: C++     Result: Accepted     Time:0 ms     Memory:1108 kb ****************************************************************/  

                            
 
0 0
原创粉丝点击