我想解决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
@彼得我没有得到提示。除了最初添加最后一位数字之外,还有什么其他功能? –