#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=500;
int main()
{
char s1[20],s2[20];
scanf("%s%s",s1,s2);//输入两个数
int len1,len2;
int a[maxn],b[maxn],c[maxn*2];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
len1=strlen(s1);
len2=strlen(s2);
int z=0;
for(int i=len1-1; i>=0; i--)//将两个数逆序
a[z++]=s1[i];
z=0;
for(int i=len2-1; i>=0; i--)
b[z++]=s2[i];
for(int i=0; i<len2; i++) //用第二个数乘第一数
for(int j=0; j<len1; j++)
c[i+j]+=b[i]*a[i];//注意累计和用的加号
for(int i=0; i<=2*maxn-1; i++) //此时乘的结果是逆序
if(c[i]>=10)
{
c[i+1]+=c[i]/10;
c[i]%=10;
}
int i;
for(i=maxn*2-1;; i--)
if(c[i])
break;
if(i>0)
{
for(;i>=0;i--)
printf("%d",c[i]);
printf("\n");
}
else
printf("0\n");
}
大数乘法
最新推荐文章于 2024-07-16 20:11:15 发布