大数相乘
发布时间:2020-12-14 02:41:11 所属栏目:大数据 来源:网络整理
导读:比较大的两个数相乘,采用字符运算,按位相乘,控制好进位就可以了。 相关示例参考:可怕的阶乘? //大数相乘#includeiostreamusing namespace std;#define max 100void CalcNN(char *A,char *B,char *C){if(NULL==A||NULL==B){return;}int len_a=strlen(A);i
比较大的两个数相乘,采用字符运算,按位相乘,控制好进位就可以了。 相关示例参考:可怕的阶乘? //大数相乘 #include<iostream> using namespace std; #define max 100 void CalcNN(char *A,char *B,char *C) { if(NULL==A||NULL==B) { return; } int len_a=strlen(A); int len_b=strlen(B); int len_c=0; if((len_a==1&&A[0]=='0')||(len_b==1&&B[0]=='0')) { C[0]='0'; C[1]=' '; return; } int bit[max]={0}; for(int i=len_a-1;i>=0;i--) { for(int j=len_b-1;j>=0;j--) { bit[(len_a+len_b-2)-(j+i)]+=((A[i]-'0')*(B[j]-'0'));//按位相乘 } } for(int i=0;i<max;i++) { if(bit[i]>9) { for(int k=i;k<max&&bit[k]>9;k++)//计算进位 { bit[k+1]+=(bit[k]/10); bit[k]=(bit[k]%10); } } } int len=max-1; while(bit[len]==0) { len--; } for(int i=len;i>=0;i--) { C[len_c++]=bit[i]+'0'; } C[len_c]=' '; } int main() { char A[max]={0}; char B[max]={0}; char C[max]={0}; while(1) { cout<<"乘数:"; gets(A); cout<<"乘数:"; gets(B); CalcNN(A,B,C); cout<<"积 :"; puts(C); } system("pause"); return 0; }运行结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |