【问题描述】
输入两个正整数,求他们的乘积。
【样例输入】
11111111111111111111111
1111111111111111111111
【样例输出】
12345679012345679012344320987654320987654321
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 int main(){ 5 char a1[10001], b1[10001]; 6 int a[10001], b[10001], c[10001]; 7 memset(a,0,sizeof(a)); 8 memset(b,0,sizeof(b)); 9 memset(c,0,sizeof(c)); 10 cin >> a1 >> b1; 11 int lena, lenb; 12 lena = strlen(a1); 13 lenb = strlen(b1); 14 //为了方便计算,整型数组从下标1开始存储 15 for(int i = 0;i<lena;i++){ 16 a[lena - i] = a1[i] - 48; 17 } 18 for(int i = 0;i<lenb;i++){ 19 b[lenb - i] = b1[i] - 48; 20 } 21 for(int i = 1; i <= lena; i++){ 22 int x = 0; //用于存放进位 23 for(int j = 1; j <= lenb; j++){ 24 c[i+j-1] = a[i]*b[j] + x + c[i+j-1];//当前乘积加上次乘积进位加当前位值 25 x = c[i+j-1]/10; 26 c[i+j-1]%=10; 27 } 28 c[i+lenb]=x; //进位 29 } 30 int lenc = lena + lenb; 31 //删除前导0 32 while(c[lenc]==0&&lenc>1){ 33 lenc--; 34 } 35 for(int i = lenc; i > 0; i--){ 36 cout << c[i]; 37 } 38 return 0; 39 }
浙公网安备 33010602011771号