我想解決Problem 13 @ Project Euler,我正在尋找一個很好的算法來做另外並輸出非常大的數字的答案。首先,我將數字的數字轉換爲矩陣的元素(100 x 50)。這是我想出了算法:算法爲大數非常大的數字(C++)
unsigned long long int sum=0, carry_over=0;
for(int j=49; j>=0; j--)
{
for(int i=0; i<100; i++)
sum+=num[i][j];
sum+=carry_over;
carry_over=sum/10;
cout<<sum%10;
sum=0;
}
cout<<carry_over;
現在,輸出將發生逆轉位,首先是個位數字,在和的第一位結束了。這很容易被人工逆轉。
我想知道這是否是一個很好的算法,考慮到精度和速度。請提出更正以使其更好。
更好的方法是使用全範圍的每一個「數字」,因此,例如,如果你有一個64位的計算機,你應該使用'uint64_t'每個數字和存儲全系列各,而不是僅僅爲0〜 10(浪費空間)。 –
爲什麼你開始在每個數字中加上最後一位數字? [這個問題順便提一下]。 – Peter
@彼得我沒有得到提示。除了最初添加最後一位數字之外,還有什麼其他功能? –