算法笔记1906ProblemC 特殊乘法

题目描述

写个算法,对2个小于1000000000的输入,求结果。特殊乘法举例:123 * 45 = 1 * 4 +1 * 5 +2 * 4 +2 * 5 +3 * 4+3 * 5

输入

两个小于1000000000的数

输出

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

样例输入

24 65
42 66666
3 67

样例输出

66
180
39

代码展示

#include<cstdio>
#include<cstring>
const int max = 10;
char num1[max], num2[max];

int main() {
    int a, b, sum = 0;
    while (scanf("%d%d", &a, &b) != EOF) {
        int i = 0, j = 0;
        while(a != 0) {
             num1[i++] = a % 10;
             a /= 10;

        }

         while(b != 0) {
             num2[j++] = b % 10;
             b /= 10;

        }

        for(int k = 0; k < strlen(num1); k++) {
            for(int l = 0; l < strlen(num2); l++) {
                sum += num1[k] * num2[l];
            }
        }
        printf("%d\n", sum);
        sum = 0;
        memset(num1, 0, sizeof(num1));
        memset(num2, 0, sizeof(num2));
    }
    return 0;
}

小结

在测试的时候发现每次输入第三组数据的时候都会出错,仔细检查发现原来只清空了i, j但没有清空数组,而正好第二次的数据比较大导致无法完全覆盖。。。另外对于负数我虽然没有考虑但试了试好像可以,有空再研究一下。

猜你喜欢

转载自blog.csdn.net/luminouswithyou/article/details/88567800