两个大整数的乘法
Problem Description
计算两个大整数的乘积
Input
共2行,每行一个大整数
Output
共1行,表示两个大整数的乘积
Sample Input
112233445566778899 100000000000000000
Sample Output
11223344556677889900000000000000000
1 #include<stdio.h> 2 #include<string.h> 3 char str1[1000],str2[1000]; 4 int a1[1000],a2[1000],a3[1000],a4[100],b1,b2,b3; 5 int main() 6 { 7 int i,j,e,a=0,x,y=0,d=1; 8 gets(str1);gets(str2); 9 b1=strlen(str1);b2=strlen(str2);b3=b1+b2; 10 for(i=b1-1;i>=0;i--) 11 a1[b1-1-i]=str1[i]-'0'; 12 x=str2[b2-1]-'0'; 13 for(i=0;i<=b1;i++) 14 { e=a1[i]*x+a; 15 a=e/10; 16 a4[i]=e%10;} 17 for(j=b2-2;j>=0;j--) 18 {e=a=0; 19 x=str2[j]-'0'; 20 for(i=0;i<=b1;i++) 21 { e=a1[i]*x+a; 22 a=e/10; 23 a3[i]=e%10;} 24 e=a=0; 25 for(i=d;i<=b1+d;i++) 26 { e=a4[i]+a3[i-d]+a; 27 a=e/10; 28 a4[i]=e%10; 29 } 30 d++; 31 } 32 if(a4[b3]==0){ 33 for(i=b3-2;i>=0;i--) 34 printf("%d",a4[i]);} 35 else { 36 for(i=b3-1;i>=0;i--) 37 printf("%d",a4[i]);} 38 printf("\n"); 39 return 0; 40 }