zoukankan      html  css  js  c++  java
  • [模板]大数加法

    最近两场训练赛都有用到大数加法,但我又不想用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("
    ");
    42     }
    43 }
  • 相关阅读:
    P1092 虫食算
    P1040 加分二叉树
    cfER76 abcd
    cf599 div2 a/b1/b2/c
    AtCoder Contest 144 DE
    Round G 2019
    luogu3084 Photo 单调队列优化DP
    luogu4234 最小差值生成树
    luogu1373 小a和uim之大逃离
    luogu1070 道路游戏 单调队列
  • 原文地址:https://www.cnblogs.com/Railgun000/p/11205315.html
Copyright © 2011-2022 走看看