- 题目描述:
-
写个算法,对2个小于1000000000的输入,求结果。
特殊乘法举例:123 * 45 = 1*4 +1*5 +2*4 +2*5 +3*4+3*5
- 输入:
-
两个小于1000000000的数
- 输出:
-
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
- 样例输入:
-
123 45
- 样例输出:
-
54
#include <iostream> #include<string.h> using namespace std; int main() { int a,b; cin >> a; cin >> b; int buf1[20],buf2[20]; int size1 = 0; int size2 = 0; memset(buf1,0,sizeof(buf1)); memset(buf2,0,sizeof(buf2)); while(a != 0){ buf1[size1++] = a % 10;//获取各位数组 a /= 10;//所有数位上的数字移动到上一位 } while(b != 0){ buf2[size2++] = b % 10; b /= 10; } int ans = 0; for(int i=0;i<size1;i++) for(int j=0;j<size2;j++) ans += buf1[i]*buf2[j]; cout << ans << endl; return 0; }
当然,还有另一种解法,这种解法就直接把所有的输入作为字符串输入了
#include <iostream> #include<string.h> #include<cstdio> using namespace std; int main() { char a[20],b[20]; scanf("%s %s",a,b); int ans = 0; for(int i=0;a[i]!=0;i++) for(int j=0;b[j]!=0;j++) ans += (a[i]-‘0‘)*(b[j]-‘0‘);//记得,如果数字输入为char时,实际计算的时候是要减‘0’的 printf("%d",ans); return 0; }