#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
char c[1000001];
void reverse(char * c)//字符串翻转函数
{
int len = strlen(c);
for(int i=0; i<len/2; i++)
swap(c[i],c[len-i-1]);
}
void multiplication(char * sa,char * sb,char * ans)//大数相乘函数
{
int i,j,k,r;
reverse(sa);reverse(sb);
int len=strlen(sa);
int len1=strlen(sb);
for(i=0;i<len;i++)
{
k=0;
for(j=0;j<len1;j++)
{
int sum;
int t=(sa[i]-'0'+0)*(sb[j]-'0'+0)+k;
if(ans[i+j]>47)
sum=ans[i+j]-'0'+t;
else
sum=t;
k=sum/10;
ans[i+j]=(sum%10)+'0';
}
r=0;
while(k)
{
int t;
if(ans[i+j+r]>47)
t = ans[i+j+r]-'0' + k;
else
t=k;
k=t/10 ;
ans[i+j+r] = (t%10)+'0';
r++;
}
}
reverse(sa);reverse(sb);reverse(ans);
}
int main()
{
char a[10001],b[10001];
while(scanf("%s%s",a,b)!=EOF)
{
memset(c,0,sizeof(c));
multiplication(a,b,c);
cout<<a<<endl<<" 乘 "<<endl<<b<<endl<<"="<<endl;
cout<<c<<endl;
}
return 0;
}
大数乘法(模板)
最新推荐文章于 2021-10-21 11:11:37 发布