高精度加高精度


【问题描述】
  有两个位数在200以内的高精度数a和b,请编程求出a与b之和。
  输入:两行,第一行为a,第二行为b。
  输出:一行,表示a与b之和C。
  注意:a与b的位数不一定相同。

【输入样例】

  省略

【输出样例】

  省略

 

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
    char a[201], b[201];
    int a2[201]={}, b2[201]={}, c, c2[202]={}, d2[205]={};
    cin >> a >> b;
    int lena = strlen(a), lenb = strlen(b);
    for(int i=0; i<=lena-1; i++)
        a2[lena-i] = a[i] - 48; // 下标从1开始的。
    for(int i=0; i<=lenb-1; i++)
        b2[lenb-i] = b[i] - 48; // 下标从1开始的。
    // 高精度加法
    int maxlen = max(lena, lenb), jw=0, i;
    for(i=1; i<=maxlen; i++)
    {
        int t = a2[i] + b2[i] + jw;
        jw = t/10;
        c2[i] = t%10;
    }
    if(jw) c2[i] = jw;
    else i--;
    for(int j=i; j>=1; j--)
        cout << c2[j];
    return 0;
}

 

posted @ 2023-04-03 16:04  Hi,小董先生  阅读(40)  评论(0)    收藏  举报