【模板】高精加

来源:互联网 发布:淘宝一千零一夜男主角 编辑:程序博客网 时间:2024/06/05 16:19

我又来水了

  • 基本介绍
  • 模板题目
  • 代码实现

基本介绍

面对很大的数据进行加法 longlong会爆 我们用数组存储每一位来模拟加法

模板题目

题目描述
高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式
输入格式:
分两行输入a,b<=10^500
输出格式:
输出只有一行,代表A+B的值

输入输出样例
输入样例:
1
1
输出样例:
2

代码实现

#include<iostream>#include<cstdio>#include<cctype>#include<cstring>#include<string>    using namespace std;    #define in = read();    typedef long long ll;    typedef unsigned int ui;    const ll size = 10000 + 100;        string x , y;        int lena , lenb , h , num;        int a[size] , b[size];inline ll read(){        ll num = 0 , f = 1;    char ch = getchar();        while(!isdigit(ch)){                if(ch == '-')   f = -1;                ch = getchar();        }        while(isdigit(ch)){                num = num*10 + ch - '0';                ch = getchar();        }        return num*f;}int main(){        cin>>x>>y;        lena = x.size();    lenb = y.size();        for(register int i=0;i<lena;i++)                a[i] = x[lena - i - 1] - '0';        for(register int i=0;i<lenb;i++)                b[i] = y[lenb - i - 1] - '0';        while(h <= lena || h <= lenb){                b[h] += a[h] + num;                num = b[h]/10;                b[h] %= 10;                h ++;        }        b[h] = num;        while(!b[h] && h)   h --;        for(register int i=h;i>=0;i--)                printf("%d" , b[i]);}//COYG
原创粉丝点击