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;

}

如程序有錯誤或者你有什麼建議,歡迎你的留言!

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