背景
高精度算法,屬於處理大數字的數學計算方法。在一般的科學計算中,會經常算到小數點後幾百位或者更多,當然也可能是幾千億幾百億的大數字。一般這類數字我們統稱爲高精度數,高精度算法是用計算機對於超大數據的一種模擬加,減,乘,除,乘方,階乘,開方等運算。
對於非常龐大的數字無法在計算機中正常存儲,於是,將這個數字拆開,拆成一位一位的,或者是四位四位的存儲到一個數組中, 用一個數組去表示一個數字,這樣這個數字就被稱爲是高精度數。高精度算法就是能處理高精度數各種運算的算法,但又因其特殊性,故從普通數的算法中分離,自成一家。
描述
輸入兩個自然數,用高精度方式算出它們的和。
輸入格式
兩個自然數,一行一個。
方式:通過鍵盤輸入
輸出格式
一行,它們的和。
方式:通過屏幕輸出
測試樣例
輸入
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;
}
如程序有錯誤或者你有什麼建議,歡迎你的留言!