模板——大数相乘
发布时间:2020-12-14 03:40:29 所属栏目:大数据 来源:网络整理
导读:两个大数相乘 # includestdio.h# includestring.h# includealgorithmusing namespace std;char a[300],b[300];int main(){while(scanf("%s%s",a,b)!=EOF){ if(a[0]=='0'||b[0]=='0') { printf("0n"); continue; } int length_a=strlen(a); int length_b=str
两个大数相乘 # include<stdio.h> # include<string.h> # include<algorithm> using namespace std; char a[300],b[300]; int main() { while(scanf("%s%s",a,b)!=EOF) { if(a[0]=='0'||b[0]=='0') { printf("0n"); continue; } int length_a=strlen(a); int length_b=strlen(b); reverse(a,a+length_a); reverse(b,b+length_b); int ans[600]; memset(ans,sizeof(ans)); for(int i=0;i<length_a;i++) { int temp[600],s,c=0; memset(temp,sizeof(temp)); for(int j=0;j<length_b;j++) { s=(a[i]-48)*(b[j]-48)+c; temp[j+i]=s%10; c=s/10; } int cycle=0; while(c!=0) { temp[cycle+i+length_b]=c%10; c/=10; cycle++; } c=0; for(int k=0;k<600;k++) { s=temp[k]+ans[k]+c; ans[k]=s%10; c=s/10; } } int sign; for(int i=599;i>=0;i--) { if(ans[i]) { sign=i; break; } } for(int i=sign;i>=0;i--) printf("%d",ans[i]); printf("n"); } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |