题目描述
求两数的积。
输入格式
两行,两个整数。
输出格式
一行一个整数表示乘积。
输入输出样例
输入 #1
1 2
输出 #1
2
说明/提示
每个数字不超过 10200010^{2000}102000 ,需用高精。
注意:结果为0的情况
#include<stdio.h>
#include<string.h>
int main()
{
char s1[10000];
char s2[10000];
int ss1[10000];
int ss2[10000];
int sum[20000];
int i,j,k,m,n;
scanf("%s%s",s1,s2); //输入两个字符串
int len1=strlen(s1);
int len2=strlen(s2);
// printf("%s\n%s\n",s1,s2); //检验输入是否正确
for(i=0;i<len1;i++)
ss1[i]=s1[len1-i-1]-48;//将第一个字符串转化为数组,且逆序
for(i=0;i<len2;i++)
ss2[i]=s2[len2-i-1]-48;//将第二个字符串转化为数组,且逆序
// for(i=0;i<len1;i++)
// printf("%d",ss1[i]);
// printf("\n");
// for(i=0;i<len2;i++)
// printf("%d",ss2[i]);
// printf("\n");
for(i=0;i<len1;i++)
for(j=0;j<len2;j++){
sum[i+j]+=ss1[i]*ss2[j];//相乘
}
for(i=0;i<len1+len2-1;i++)//进位
if(sum[i]>=10){
sum[i+1]+=sum[i]/10;
sum[i]%=10;
}
k=len1+len2;
while(sum[k]==0 && k>0)
k--;
for(i=0;i<=k;i++)
printf("%d",sum[k-i]);
return 0;
}