HDOJ 1047 Integer Inquiry (大数)

 1 //http://acm.hdu.edu.cn/showproblem.php?pid=1047
 2
//这题要说的,我觉得就是要考虑进位的问题,而且不是进一位两位,可能是很多位,
//不过好像不考虑也能过,估计是测试数据太弱了。

//还有就是题目讲了半天不知道再扯什么东西,,,给的Input感觉有问题,,,
//水过就好。。。。

 

 3 #include <iostream>
 4 #include <string.h>
 5 using namespace std;
 6 int main()
 7 {
 8     int n,i,a,l;
 9     char    s[100];    
10     while(cin>>n)
11     while(n--)
12     {
13         int sum[105]={0},m=0;
14        while(cin>>s,strcmp(s,"0"))
15        {
16             l=strlen(s);
17             if(l>m)
18                 m=l;
19             for(i=l-1;i>=0;i--)
20             {
21                   sum[l-1-i]+=s[i]-'0';
22                  if(sum[l-1-i]>9)
23                  {
24                      sum[l-i]+=sum[l-1-i]/10;
25                      sum[l-1-i]=sum[l-1-i]%10;
26                  }
27             }
28             if(l<m)        //我觉得是有必要考虑的
29             {
30                 for(i=i;i<m;i++)
31                 {
32                     if(sum[i]>9)
33                      {
34                          sum[i+1]+=sum[i]/10;
35                          sum[i]=sum[i]%10;
36                      }
37                 }
38             }
39        
40        }
41        l=0;
42        for(i=m+5;i>=0;i--)
43        {   
44           if(sum[i]&&l==0)
45                 l=1;
46          if(l||i==0)
47            cout<<sum[i];
48        }
49        cout<<endl;
50        if(n>0)
51            cout<<endl;
52     }
53 }

 

转载于:https://www.cnblogs.com/Lee-geeker/p/3391344.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值