大数相加poj1503
发布时间:2020-12-14 02:34:44 所属栏目:大数据 来源:网络整理
导读:转载自 http://www.voidcn.com/article/p-owyhsvqg-bck.html #includestdio.h #includeiostream #includestring.h using namespace std; int sum[1002]; char ch[1000]; int main(){ memset(sum,sizeof(sum)); while(scanf("%s",ch)strcmp(ch,"0")){ int len
转载自 http://www.voidcn.com/article/p-owyhsvqg-bck.html #include<stdio.h> #include<iostream> #include<string.h> using namespace std; int sum[1002]; char ch[1000]; int main(){ memset(sum,sizeof(sum)); while(scanf("%s",ch)&&strcmp(ch,"0")){ int len=strlen(ch); for(int i=0;i<len;i++){ sum[i]+=ch[len-i-1]-'0'; } for(int i=0;i<=1001;i++){//肯在这里了,这里i的极限1001,要小于数组里的1002 while(sum[i]>=10){ sum[i+1]+=sum[i]/10; sum[i]%=10; } } } int i=1001; while(sum[i]==0) i--; for(int j=i;j>=0;j--) cout<<sum[j]; cout<<endl; return 0; } ====================================================MY CODE======================================================= #include<iostream> #include<cstdio> #include<cstring> using namespace std; char a[101]; int num[102]; ///最长只有102位 int main() { memset(num,sizeof(num)); while(~scanf("%s",a)&&strcmp(a,"0")) ///这里太坑了,之前只判断a[0]一直都是错的....有前导0 { int len=strlen(a); for(int i=0;i<len;i++) num[i]+=a[len-1-i]-'0'; } for(int i=0;i<=100;i++) if(num[i]>=10) num[i+1]+=num[i]/10,num[i]%=10; ///统一进位,i=101不需要进位,不会超过9,用if 即可 虽然效果和while一样 int i=101; while(num[i]==0) i--; ///之前有全部置0 for(int j=i;j>=0;j--) printf("%d",num[j]); ///逆序输出 puts(""); return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |