加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数相加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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读