题目大意:给出两个整数,求这两个整数的积
解题思路:用数组进行存储
错误所在:当len3等于2000时为什么会是wrong answer,因为溢出吗?
#include<cstdio>
#include<cstring>
int main() {
char num1[1000];
char num2[1000];
while( gets(num1)) {
gets(num2);
int len1 = strlen(num1);
int len2 = strlen(num2);
char str1[1000] = {0};
char str2[1000] = {0};
char sum[2000] = {0};
for(int i = 0; i < len1; i++)
str1[i] = num1[len1 - i - 1] - '0';
for(int i = 0; i < len2; i++)
str2[i] = num2[len2 - i - 1] - '0';
int i, j;
for(i = 0; i < 1000; i++)
for(j = 0; j < 1000; j++) {
// int num = str1[i] * str2[j];
sum[i+j] = str1[i] * str2[j] + sum[i+j];
if(sum[i+j] >= 9) {
sum[i+j+1] = sum[i+j+1] + sum[i+j] / 10;
sum[i+j] = sum[i+j] % 10;
}
}
int len3 = 1999;
if((num1[0] == '0' && len1 == 1) || (num2[0] =='0' && len2 == 1))
printf("0");
else {
for(;len3 >= 0;len3--)
if(sum[len3] != 0)
break;
for(int i = len3; i >= 0; i--)
printf("%d",sum[i]);
}
printf("\n");
}
return 0;
}