设为首页 加入收藏

TOP

soj1002大数加法
2015-07-20 17:19:56 来源: 作者: 【 】 浏览:3
Tags:soj1002 大数 加法

背景:wrong在几组坑数据上,如果不看discuss,打死我也想不出来还有那些坑数据,o(???)o 唉。

思路:用数组存储那个数字,然后进行想加,相加的时候记住取余和取整运算,还得注意几组特别坑的数据,这里提供几组坑数据。

<1>0000 0000 <2>99 1 <3> 001245 1000

学习:了解用数组去存储一个大数。

#include 
  
   
#include 
   
     void Sum(int a[],int i,int b[],int j) { int c[1000],k; int d=a[--i]+b[--j]; c[0]=d%10; for(k=1;j>0;k++) { i--;j--; c[k]=(a[i]+b[j]+d/10)%10; d=a[i]+b[j]+d/10; } for(;i>0;k++) { i--; c[k]=(a[i]+d/10)%10; d=a[i]+d/10; } int ok=0; if(d/10==1) {ok=1;printf("%d",d/10);} for(k-=1;k>=0;k--) { if(c[k]) ok=1; if(ok) printf("%d",c[k]); } if(!ok) printf("%d",0); printf("\n"); } int main(void) { char ch; while(scanf("%c",&ch)==1) { int a[1000],b[1000]; a[0]=ch-'0'; int i,j; for(i=1;(ch=getchar())!=' ';i++) a[i]=ch-'0'; for(j=0;(ch=getchar())!='\n';j++) b[j]=ch-'0'; if(i>=j) Sum(a,i,b,j); else Sum(b,j,a,i); } return 0; } 
   
  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇UVa 116 Unidirectional TSP(DP) 下一篇HDU 1072 Nightmare

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·【C语言】动态内存管 (2025-12-27 06:23:20)
·C语言中的内存管理 - (2025-12-27 06:23:16)
·C语言指南:C语言内 (2025-12-27 06:23:14)
·Redis on AWS:Elast (2025-12-27 04:19:30)
·在 Spring Boot 项目 (2025-12-27 04:19:27)