[模板]大数加法

最近两场训练赛都有用到大数加法,但我又不想用java写,就整理了一下c++的大数加法模板.

本文基于老笨猫https://www.cnblogs.com/ronzhang-536/articles/4049551.html的代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int amn=1e5+5;
 4 struct BigNum{
 5     char in[amn];
 6     int len,s[amn];
 7     void getNum(){
 8         len=strlen(in);
 9         for(int i=0;i<len;i++)
10             s[i]=in[len-1-i]-'0';
11     }
12     void add(BigNum a,BigNum b){
13         len=0; ///设当前长度位零
14         int x,g=0; ///x为本位,g为低位进位
15         for(int i=0;g||i<max(a.len,b.len);i++){ ///若最后有进位(g不为0)则继续
16             x=g;
17             if(i<a.len)x+=a.s[i];
18             if(i<b.len)x+=b.s[i];
19             s[len++]=x%10;
20             g=x/10;
21         }
22     }
23     void reverse(){ ///反转输出
24         for(int i=0;i<len/2;i++){
25             int tmp=s[len-1-i];
26             s[len-1-i]=s[i];
27             s[i]=tmp;
28         }
29 
30     }
31 }a,b,c;
32 int main(){
33     while(cin>>a.in>>b.in){
34         a.getNum();
35         b.getNum();
36         c.add(a,b);
37         c.reverse();
38         for(int i=0;i<c.len;i++){
39             printf("%d",c.s[i]);
40         }
41         printf("\n");
42     }
43 }

 

全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
陈逸轩1205:才105 哥们在养生呢
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务