大整数相乘

来源:互联网 发布:手机linux系统安装教程 编辑:程序博客网 时间:2024/05/16 01:18

#include <iostream>#include <string>using namespace std;const int N=1000;int i,j;void reverseIt(string& str){int m=str.length();for(i=0,j=m-1;i<=j;i++,j--){char temp;temp=str[i];str[i]=str[j];str[j]=temp;}}void StrToInt(string str1,int (&a)[N]){for(i=0;i<str1.size();i++)a[i]=str1[i]-'0';}void Calcuate(string str1,string str2){int m=0,n=0,count=0;int a[N]={0},b[N]={0},Result[2*N]={0};m=str1.length();//str1*str2,a*bn=str2.length();reverseIt(str1);reverseIt(str2);StrToInt(str1,a);StrToInt(str2,b);for(i=0;i<n;i++)//乘数for(j=0;j<m;j++)//被乘数的位置   {   Result[i+j]+=b[i]*a[j];   if(Result[i+j]>10){   Result[i+j+1]+=Result[i+j]/10;   Result[i+j]=Result[i+j]%10;    }//if   }//forif(Result[m+n-1]!=0) count=m+n-1;else count=m+n-2;for(int i=count;i>=0;i--)  {  cout<<Result[i];  }//forcout<<endl;}int main(){string str1,str2;while(1){cout<<"Please input two integer:"<<endl;cin>>str1>>str2;Calcuate(str1,str2);}//whilereturn 0;}

大整数相乘


原创粉丝点击