算法笔记练习 题解合集
题目
题目描述
写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 14 +15 +24 +25 +34+35
输入
两个小于1000000000的数
输出
输入可能有多组数据,对于每一组数据,输出Input中的两个数按照题目要求的方法进行运算后得到的结果。
样例输入
24 65
42 66666
3 67
样例输出
66
180
39
思路
把两个数字各个数位上的数,分别拆分进两个数组,然后用两层循环计算答案。
代码
#include <cstdio>
int split (int *a, int n) { //将数字 n 拆分进数组 a,并返回 n 的位数
int dig = 0;
if (n == 0) {
*a = 0;
return 1;
}
while (n > 0) {
*a = n % 10;
n /= 10;
++a;
++dig;
}
return dig;
}
int main() {
int A, B;
while ((scanf("%d %d", &A, &B)) != EOF) {
int a[11] = {0}, b[11] = {0}, sum = 0;
int da = split(a, A), db = split(b, B);
for (int i = 0; i < da; ++i)
for (int j = 0; j < db; ++j)
sum += a[i] * b[j];
printf("%d\n", sum);
}
return 0;
}