尝试解决找到num^num的前k位数字的问题,我使用C++和Python编写了相同的程序。
C++
Python
输出
C++
long double intpart,num,f_digit,k;
cin>>num>>k;
f_digit= pow(10.0,modf(num*log10(num),&intpart)+k-1);
cout<<f_digit;
Python
(a,b) = modf(num*log10(num))
f_digits = pow(10,b+k-1)
print f_digits
输入
19423474 9
输出
C++ > 163074912
Python > 163074908
我检查了结果,C++解决方案是准确的。
在http://www.wolframalpha.com/input/?i=19423474^19423474上进行了检查。
有什么办法可以在Python中获得相同的精度吗?
编辑:我知道有关获取此精度的外部库包的信息,但是否有本地解决方案?
a
是小数部分,b
是整数部分,并且该代码只与小数部分(a
)有意义,但是在后续的pow
计算中你使用了b
(由于使用了float
而导致OverflowError
,如果修复为使用纯整数运算,则需要花费大量时间/内存才能产生结果,如果它最终完成)。 - ShadowRanger