题目描述
输入两个高精度正整数M和N(M和N均小于100位)。求这两个高精度数的积。
输入
两行,分别输入两个高精度正整数M和N
输出
输出计算结果
样例输入
36 3
样例输出
108
从后往前逐为相乘,结果加在i+j-1,也也要注意进位
#include<bits/stdc++.h>
using namespace std;
char s1[1005],s2[1005];
int a[1005],b[1005],c[1005],i=1;
int main()
{
scanf("%s",&s1);
scanf("%s",&s2);
a[0]=strlen(s1);
b[0]=strlen(s2);
for(i=a[0];i>0;i--)
{
a[a[0]-i+1]=s1[i-1]-'0';
}
for(i=b[0];i>0;i--)
{
b[b[0]-i+1]=s2[i-1]-'0';
}
if(a[a[0]]==0||b[b[0]]==0)
{
cout<<0;
return 0;
}
for(int j=1;j<=b[0];j++)
{
for(int i=1;i<=a[0];i++)
{
c[i+j-1]=c[i+j-1]+a[i]*b[j];
c[i+j]=c[i+j]+c[i+j-1]/10;
c[i+j-1]=c[i+j-1]%10;
}
}
if(c[a[0]+b[0]]>0)c[0]=a[0]+b[0];
else
c[0]=a[0]+b[0]-1;
for(int i=c[0];i>0;i--)
{
printf("%d",c[i]);
}
return 0;
}