题目描述:
给出两个长度小于100位的正整数,求其乘积。
输入描述:
两行,一行一个数。
输出描述:
一行,为所求乘积。
样例输入:
1937
2931
样例输出:
5677347
思想:每个单位相乘,最后统一进位
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 int main(){ 5 string a,b; 6 int len1,len2,len3,i,j,k=0; 7 cin>>a; 8 cin>>b; 9 len1=a.length(); 10 len2=b.length(); 11 len3=len1+len2; 12 int aa[len1+1]={0},bb[len2+1]={0},cc[len3+1]={0}; 13 for(i=1;i<=len1;i++){ 14 aa[i]=a[len1-i]-'0'; 15 } 16 for(i=1;i<=len2;i++){ 17 bb[i]=b[len2-i]-'0'; 18 } 19 for(i=1;i<=len1;i++){ 20 for(j=1;j<=len2;j++){ 21 cc[i+j-1]=cc[i+j-1]+aa[i]*bb[j]; 22 } 23 } 24 for(i=1;i<=len3;i++){ 25 cc[i+1]=cc[i+1]+cc[i]/10; 26 cc[i]=cc[i]%10; 27 } 28 while(len3>0&&cc[len3]==0){ 29 len3--; 30 } 31 if(len3==0){ 32 cout<<0<<endl; 33 } 34 else{ 35 for(i=len3;i>0;i--){ 36 cout<<cc[i]; 37 } 38 cout<<endl; 39 } 40 return 0; 41 }