1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <algorithm> 5 using namespace std; 6 7 char a[11111],b[11111],temp[11111]; 8 int A[11111],B[11111],c[22222]; 9 int na,nb; 10 int tag; 11 int cut,g; 12 13 14 15 int main() 16 { 17 while(cin>>a>>b) 18 { 19 cut=0; 20 21 na=strlen(a); 22 nb=strlen(b); 23 for(int i=0;i<na;i++){ 24 A[i]=a[i]-'0'; 25 } 26 for(int i=0;i<nb;i++){ 27 B[i]=b[i]-'0'; 28 } 29 for(int i=na-1;i>=0;i--) 30 { 31 cut=na-i-1; 32 for(int j=nb-1;j>=0;j--) 33 { 34 c[cut]=c[cut]+A[i]*B[j]; 35 cut++; 36 } 37 } 38 tag=0; 39 for(int i=0;i<cut;i++) 40 { 41 if(c[i]>=10) 42 { 43 if(c[cut-1]>=10) 44 { 45 cut++; 46 } 47 c[i+1]+=c[i]/10; 48 c[i]=c[i]%10; 49 } 50 } 51 for(cut=22220;cut>0;cut--){ 52 if(c[cut]!=0) 53 break; 54 } 55 for(;cut>=0;cut--) 56 { 57 cout<<c[cut]; 58 } 59 cout<<endl; 60 memset(A,0,sizeof(a)); 61 memset(B,0,sizeof(b)); 62 memset(c,0,sizeof(c)); 63 } 64 return 0; 65 }
纸上得来终觉浅,绝知此事要躬行。
问题 J: 【高精度】高精度乘法
问题 J: 【高精度】高精度乘法
时间限制: 1 Sec 内存限制: 64 MB 提交: 32 解决: 16 [提交][状态][讨论版]题目描述
牢门上的第三道锁,需要使用高精度乘法来破译出相应密码,当然,必须使用“万进制算法”计算两个非负整数A、B的积,其中A和B的位数在10000位以内。
输入
共两行数据,第一行为一个非负整数A,第二行为一个非负整数B,A、B的位数均在10000以内。
输出
输出一个数,即A和B的乘积。
样例输入
2
3
样例输出
6