1.13.9
09:大整数乘法
描述
求两个不超过200位的非负整数的积。
输入有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入
12345678900 98765432100
样例输出
1219326311126352690000
来源程序设计实习2007
1 #include <cstdio> 2 #include <cstring> 3 using namespace std; 4 char a1[300],b1[300]; 5 int a[300],b[300],c[30000],lena,lenb,lenc,i,j,x; 6 int main() 7 { 8 gets(a1); 9 gets(b1); 10 lena=strlen(a1);lenb=strlen(b1); 11 for(i=0;i<lena;i++)a[lena-i]=a1[i]-48; 12 for(i=0;i<lenb;i++)b[lenb-i]=b1[i]-48; 13 for(i=1;i<=lena;i++) 14 { 15 x=0; 16 for(j=1;j<=lenb;j++) 17 { 18 c[i+j-1]=a[i]*b[j]+x+c[i+j-1]; 19 x=c[i+j-1]/10; 20 c[i+j-1]%=10; 21 } 22 c[i+lenb]=x; 23 } 24 lenc=lena+lenb; 25 while(c[lenc]==0&&lenc>1) 26 lenc--; 27 for(i=lenc;i>=1;i--) 28 printf("%d",c[i]); 29 return 0; 30 }

浙公网安备 33010602011771号