高精度加法 洛谷 P1601 A+B Problem(高精)

来源:互联网 发布:ubuntu qq2017安装 编辑:程序博客网 时间:2024/06/05 20:26

高精度加法 洛谷 P1601 A+B Problem(高精)

平常一般不用高精度,结果连高精度加法都不会。。

现在开始学习一下,毕竟是极其基础的东西。。。

洛谷 P1601 A+B Problem(高精)

题目背景

题目描述

高精度加法,x相当于a+b problem,不用考虑负数

输入输出格式

输入格式:
分两行输入a,b<=10^500

输出格式:
输出只有一行,代表A+B的值

输入输出样例

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

代码如下:

#include<cstdio>#include<iostream>#include<cmath>#include<cstring>using namespace std;char ca[501],cb[501];int a[501],b[501],c[510];int lena,lenb,lenc;void super_addition(int lena,int lenb){    lenc=max(lena,lenb);    int temp=0;    for (int i=0;i<lenc;i++)    {        if (a[i]+b[i]+temp>9)        {            c[i]=(a[i]+b[i]+temp)%10;            temp=(a[i]+b[i]+temp)/10;        }        else        {            c[i]=a[i]+b[i]+temp;            temp=0;        }    }    if (temp!=0)    {        c[lenc]=temp;        lenc++;    }    return;}int main(){    memset(a,0,sizeof(a));    cin>>ca;    lena=strlen(ca);    for (int i=0;i<lena;i++)    {        a[i]=ca[lena-1-i]-'0';    }    memset(b,0,sizeof(b));    cin>>cb;    lenb=strlen(cb);    for (int i=0;i<lenb;i++)    {        b[i]=cb[lenb-1-i]-'0';    }    memset(c,0,sizeof(c));    lenc=0;    super_addition(lena,lenb);    for (int i=lenc-1;i>=0;i--)    {        printf("%d",c[i]);    }    printf("\n");    return 0;}
0 0