描述:
求两个不超过200位的非负整数的积。
输入:
有两行,每行是一个不超过200位的非负整数,没有多余的前导0。
输出:
一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入:
12345678900
98765432100
样例输出:
1219326311126352690000
#include <stdio.h>
#include <string.h>
int num1[200],num2[200],res[401];
char line1[201],line2[201];
int main()
{
gets(line1);
gets(line2);
int i,j,len1 = strlen(line1),len2 = strlen(line2);
for(i = len1-1,j=0;i >= 0;i--,j++)
num1[j] = line1[i] - '0';
for(i = len2-1,j=0;i >= 0;i--,j++)
num2[j] = line2[i] - '0';
for(i = 0;i < len1;i++)
for(j = 0;j < len2;j++)
res[i+j] += num1[i] * num2[j];
for(i = 0;i <= len1+len2;i++)
{
res[i+1] += res[i]/10;
res[i] = res[i]%10;
}
while(!res[i] && i >= 0)i--;
if(i == -1)
printf("0");
else
while(i >= 0)
printf("%d",res[i--]);
return 0;
}