UVA - 10106 Product

来源:互联网 发布:大连锐鑫软件 编辑:程序博客网 时间:2024/06/16 17:54

题目大意:给出两个整数,求这两个整数的积

解题思路:用数组进行存储

错误所在:当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;}


0 0
原创粉丝点击