C++实现大数乘法算法代码
C++实现大数乘法算法代码
//大数乘法算法 #include<iostream> #include<string> #include<cstring> usingnamespacestd; intmain() { stringnum1,num2; cin>>num1>>num2; //cout<<num1.size()<<""<<num2.size()<<endl; constchar*n1; constchar*n2; if(num1.size()<num2.size()) { n1=num2.c_str(); n2=num1.c_str(); } else { n1=num1.c_str(); n2=num2.c_str(); } char*n=newchar[strlen(n1)+strlen(n2)+1]; for(unsignedinti=0;i<strlen(n1)+strlen(n2);i++) n[i]='0'; n[strlen(n1)+strlen(n2)]='\0'; //cout<<strlen(n)<<endl; intcount=0,flag=0; for(inti=strlen(n1)-1;i>=0;i--) { flag++; intx1=n1[i]-'0'; //cout<<"n1["<<i<<"]为:"<<x1<<endl; charcarry='0'; for(intj=strlen(n2)-1;j>=0;j--) { intx2=n2[j]-'0'; //cout<<"n2["<<j<<"]为:"<<x2<<endl; //cout<<"当前位未改变前值为:"<<n[count]<<endl; intsum=x1*x2+(carry-'0')+n[count]-'0'; //cout<<"sumis"<<sum<<endl; n[count++]=(sum%10)+'0'; carry=(sum/10)+'0'; //cout<<"当前位的值为:"<<n[count-1]<<endl; //cout<<"carry的值为:"<<carry<<endl; } if(carry!='0') { n[count]=carry; count=flag; //cout<<"当前位的值为:"<<n[count]<<endl; } else count=flag; } for(inti=strlen(n)-1;i>=0;i--) { if((i==strlen(n)-1)&&(n[i]=='0')) continue; cout<<n[i]; } cout<<endl; delete[]n; system("pause"); return0; }
以上就是本文所述的全部内容了,希望大家能够喜欢。