C++编程练习:8-高精度加法

背景

    高精度算法,属于处理大数字的数学计算方法。在一般的科学计算中,会经常算到小数点后几百位或者更多,当然也可能是几千亿几百亿的大数字。一般这类数字我们统称为高精度数,高精度算法是用计算机对于超大数据的一种模拟加,减,乘,除,乘方,阶乘,开方等运算。

    对于非常庞大的数字无法在计算机中正常存储,于是,将这个数字拆开,拆成一位一位的,或者是四位四位的存储到一个数组中, 用一个数组去表示一个数字,这样这个数字就被称为是高精度数。高精度算法就是能处理高精度数各种运算的算法,但又因其特殊性,故从普通数的算法中分离,自成一家。

描述

输入两个自然数,用高精度方式算出它们的和。

输入格式

两个自然数,一行一个。
方式:通过键盘输入

输出格式

一行,它们的和。
方式:通过屏幕输出

测试样例

输入

20100122201001221234567890
2010012220100122

输出

20100122203011233454668012

注意

数字可能会非常长。


参考程序:
 

#include<iostream>
#include<string>
using namespace std;
int main()
{
    int i;
    char a[1000],b[1000];
    cin>>a>>b;
    int A[1000],B[1000],C[1000];
    for(i=0;i<100;i++)
    {
        A[i]=0;
        B[i]=0;
        C[i]=0;
    }
    for (i=0;i<strlen(a);i++)   //倒存a
    {  
        A[strlen(a)-i-1]=a[i]-48;  
    }
    for (i=0;i<strlen(b);i++)   //倒存b
    {  
        B[strlen(b)-i-1]=b[i]-48;   
    }
    int max=strlen(a)>strlen(b)?strlen(a):strlen(b);
    int num=0;
    for(i=0;i<max-1;i++)
    {
        C[i]=A[i]+B[i]+num;
        num=0;
        if(C[i]>9)
        {
            num=C[i]/10;
            C[i]=C[i]%10;
        }
    }
    C[max-1]=A[max-1]+B[max-1];
    if(C[max-1]>9)
    {
        C[max]=C[max-1]/10;
        C[max-1]=C[max-1]%10;
        max++;
    }
    for(i=0;i<max;i++)
    {
        cout<<C[max-i-1];
    }
    cout<<endl;
    return 0;

}

如程序有错误或者你有什么建议,欢迎你的留言!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章