UVa - 424 Integer Inquiry

解题感悟:

  1. char类型只可保存小于128的数,超出的话会溢出,所以每读入一个大数,加完后需要马上进位,否则数目一多,很大可能会溢出,这时就只能 WA 了 (说多了都是泪啊/(ㄒoㄒ)/~~);
  2. 注意特殊数据 ,例如 0000 00001;
#include<stdio.h>
#include<string.h>
#define MAXN 105

char bigint[MAXN],sum[MAXN];

int main(void){

        memset(bigint,0,sizeof(char)*MAXN);       
        memset(sum,'0',sizeof(char)*MAXN);         
        sum[MAXN]='\0';

        int i,k,len;

        while(scanf("%s",bigint) ){
            len=strlen(bigint);
            if(len==1 && bigint[0] == '0')
                break;
            for(i=len-1,k=MAXN-1;i>=0;--i,--k)
                sum[k] += bigint[i]-'0';

            for(i=MAXN-1;i>0;--i){
                int temp=sum[i]-'0';
                sum[i-1] += temp / 10;
                sum[i] = temp % 10 +'0';
            }
        }

        for(i=0;i<MAXN;++i)
            if(sum[i]!='0' || i == MAXN - 1)
                break;
        puts(sum+i);            
        return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值