大数运算

  1. /*
  2. 习题 27:大数运算(1)★★
  3. 输入:
  4. 多组测试数据。第一行为n(1<=n<=2e9),其后n行是一个在0到1e1000之间的数,
  5. 输入的n为0或者遇到EOF时结束程序
  6. 输出:
  7. 对每组测试数据里的n个数求和(最后结果不会超出1e100000),输出结果
  8. 样例输入:
  9. 2
  10. 123456789
  11. 987654321
  12. 3
  13. 1111111111111111111
  14. 2222222222222222222
  15. 3333333333333333333
  16. 样例输出:
  17. 1111111110
  18. 6666666666666666666
  19. 难度:easy
  20. */
  21. #include<stdio.h>
  22. #include<string.h>
  23. #define MAX 100000
  24. int main()
  25. {
  26.     char s1[MAX],s[MAX];
  27.     long len1,i,j,tmp;
  28.     long n;
  29.     while(scanf("%d",&n)!=EOF && n!=0){
  30.         memset(s,'0',MAX-1);
  31.         for(i=0;i<n;i++){
  32.             scanf("%s",s1);
  33.             len1=strlen(s1);
  34.             for(j=len1;j>0;j--){
  35.                 tmp=s[j] - 48 + s1[len1-j]-48;
  36.                 s[j]=tmp+48;
  37.             }               
  38.         }
  39.         for(i=0;i<MAX;i++)
  40.             if(s[i]>57){
  41.                 s[i+1]+=(s[i]-48)/10;
  42.                 s[i]=48 + (s[i]-48)%10;
  43.             }
  44.             
  45.         i=MAX-1;
  46.         while(i-->=0)
  47.             if(s[i]!='0')break;
  48.         for(;i>0;i--)
  49.             printf("%c",s[i]);
  50.         printf("/n");
  51.     }
  52.     return 0;
  53. }
  54.                     
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值