大数运算总结
发布时间:2020-12-14 05:02:25 所属栏目:大数据 来源:网络整理
导读:①大数加法 #includestdio.h#includestring.hchar a[10001],b[10001],c[10001];int main(){int m,n,i,j,k;scanf("%s%s",a,b);m=strlen(a);n=strlen(b);if(m=n){j=n-1;for(i=m-1;i=m-n;i--){a[i]+=b[j]-48;j--;}for(i=m-1;i0;i--) if(a[i]'9') {a[i]-=10;a[i-
①大数加法 #include<stdio.h> #include<string.h> char a[10001],b[10001],c[10001]; int main() { int m,n,i,j,k; scanf("%s%s",a,b); m=strlen(a); n=strlen(b); if(m>=n) { j=n-1; for(i=m-1;i>=m-n;i--) { a[i]+=b[j]-48; j--; } for(i=m-1;i>0;i--) if(a[i]>'9') { a[i]-=10; a[i-1]+=1; } if(a[0]>'9') { for(i=m;i>0;i--) a[i]=a[i-1]; a[1]-=10; a[0]='1'; } printf("%sn",a); } else { j=m-1; for(i=n-1;i>=n-m;i--) { b[i]+=a[j]-48; j--; } for(i=n-1;i>0;i--) if(b[i]>'9') { b[i]-=10; b[i-1]+=1; } if(b[0]>'9') { for(i=n;i>0;i--) b[i]=b[i-1]; b[1]-=10; b[0]='1'; } printf("%sn",b); } return 0; }
#include<stdio.h> #include<string.h> int main() { char a[10001],sum[100002]; int m,x,j; while(scanf("%d",&x)!=EOF) { for(j=1;j<=x;j++) { memset(a,sizeof(a)); memset(b,sizeof(b)); memset(sum,sizeof(sum)); scanf("%s%s",b); if(strlen(b)>strlen(a)) { m=strlen(b)-1; n=strlen(a)-1; } else { m=strlen(a)-1; n=strlen(b)-1; } scanf("%s%s",b); if(strlen(b)>strlen(a)) { m=strlen(b)-1; n=strlen(a)-1; } else { m=strlen(a)-1; n=strlen(b)-1; } if(strlen(a)>strlen(b)) for(i=m-n-1;i>=0;i--) sum[i]=a[i]; else for(i=m-n-1;i>=0;i--) sum[i]=b[i]; for(i=m;i>=1;i--) if(sum[i]>'9') { sum[i]-=10; sum[i-1]+=1; } if(sum[0]>'9') { sum[0]-=10; printf("Case %d:n",j); printf("%s + %s = 1%sn",b,sum); } else { printf("Case %d:n",j); printf("%s + %s = %sn",sum); } if(j!=x) printf("n"); } } } ? ③大数相加(小数) #include<stdio.h> #include<string.h> int main() { char a[400],b[400],sum1[401],sum2[402]; int m,y,j; while(scanf("%s%s",b)!=EOF) { memset(sum1,sizeof(sum1)); memset(sum2,sizeof(sum2)); m=strlen(a); n=strlen(b); for(i=0;a[i]!='.'&&a[i]!=0;i++) x=i; for(i=0;b[i]!='.'&&b[i]!=0;i++) y=i; if(y>x) { j=x; for(i=0;i<=y;i++) sum1[i]=b[i]; for(i=y;j>=0;i--) { sum1[i]+=a[j]-48; j--; } } else { j=y; for(i=0;i<=x;i++) sum1[i]=a[i]; for(i=x;j>=0;i--) { sum1[i]+=b[j]-48; j--; } } if(m-x<n-y) { j=x+2; for(i=y+2;i<n;i++) sum2[i-y-2]=b[i]; for(i=y+2;j<m;i++) { sum2[i-y-2]+=a[j]-48; j++; } } else { j=y+2; for(i=x+2;i<m;i++) sum2[i-x-2]=a[i]; for(i=x+2;j<n;i++) { sum2[i-x-2]+=b[j]-48; j++; } } for(i=(m-x-2)<(n-y-2)?(m-x-2):(n-y-2);i>0;i--) if(sum2[i]>'9') { sum2[i]-=10; sum2[i-1]+=1; } if(sum2[0]>'9') { sum2[0]-=10; sum1[x>y?x:y]+=1; } for(i=x>y?x:y;i>0;i--) if(sum1[i]>'9') { sum1[i]-=10; sum1[i-1]+=1; } if(sum1[0]>'9') { sum1[0]-=10; printf("1%s",sum1); } else printf("%s",sum1); for(i=strlen(sum2)-1;i>=0;i--) { if(sum2[i]=='0') sum2[i]=0; else break; } if(sum2[0]<='9'&&sum2[0]>='0') printf(".%sn",sum2); else printf("n"); memset(a,sizeof(a)); memset(b,sizeof(b)); } return 0; }
#include<stdio.h> #include<string.h> #define max 10000 int main() { char a[100]={0},b[100]={0},t[100]={0},sum[max]={0}; int i,k,l,la,lb; while(~scanf("%s%s",b)) { k=0; la=strlen(a); lb=strlen(b); for(j=lb-1;j>=0;j--) b[j]-=48; for(j=la-1;j>=0;j--) a[j]-=48; for(j=lb-1;j>=0;j--) { for(i=la-1;i>=0;i--) { t[i+1]=a[i]*b[j]; } for(i=la;i>0;i--) { if(t[i]>9) { t[i-1]+=t[i]/10; t[i]%=10; } } for(i=la+lb-k,l=la;l>=0;i--,l--) sum[i]+=t[l]; for(i=la+lb;i>=1;i--) { if(sum[i]>9) { sum[i-1]+=sum[i]/10; sum[i]%=10; } } memset(t,sizeof(t)); k++; } sum[la+lb+1]=0; for(i=la+lb;i>=0;i--) sum[i]+=48; k=strlen(sum); for(i=0;sum[i]==48;i++) { } for(j=0;sum[j+i]!=0;j++) sum[j]=sum[j+i]; sum[k-i]=0; printf("%sn",sum); memset(a,sizeof(a)); memset(b,sizeof(b)); memset(t,sizeof(t)); memset(sum,sizeof(sum)); } }
#include<stdio.h> #include<string.h> #define MAX 10005 int main() { int n,t,s; char a[102],b[102],temp[105]={0},sum[MAX]={0}; int lena,lenb,flag,m=0; scanf("%d",&n); while(n--) { m++; flag=0; scanf("%s%s",b); lena=strlen(a); lenb=strlen(b); for(j=lenb-1;j>=0;j--) { for(t=lena,i=lena-1;i>=0;i--,t--) { temp[t]=(a[i]-48)*(b[j]-48); } for(t=lena;t>=1;t--) { if(temp[t]>9) { temp[t-1]+=temp[t]/10; temp[t]%=10; } } for(s=lena+lenb-flag,t=lena;t>=0;t--,s--) sum[s]+=temp[t]; for(t=lena;t>=0;t--) temp[t]=0; for(s=lena+lenb;s>=1;s--) { if(sum[s]>9) { sum[s-1]+=sum[s]/10; sum[s]%=10; } } flag++; } sum[lena+lenb+1]='/0'; for(s=0;s<=lena+lenb;s++) sum[s]=sum[s]+48; for(s=0;s<lena+lenb;s++) { if(sum[0]==0x30) { for(t=0;t<=lena+lenb-s;t++) sum[t]=sum[t+1]; } else break; } printf("Case %d:n",m); printf("%s * %s = %sn",sum); if(n!=0) printf("n"); for(s=lena+lenb+1;s>=0;s--) sum[s]=0; } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |