大数相加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;
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
