我在 Project Euler 上工作,以提高我的 C++ 编码技能,为下学期我们将面临的编程挑战做准备(因为他们不让我们使用 Python,嘘!)。
我在#16,我正在尝试找到一种方法来保持 2¹°°° 的真实精度
例如:
int main(){
double num = pow(2, 1000);
printf("%.0f", num):
return 0;
}
印刷
10715086071862673209484250490600018105614050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
缺少大部分数字(来自python):
>>> 2**1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L
当然,我可以使用 Python 1 衬垫编写程序
sum(int(_) for _ in str(2**1000))
这立即给了我结果,但我正试图找到一种在 C++ 中实现它的方法。任何指针?(哈哈...)
编辑:
标准库之外的东西对我来说毫无价值——在这些比赛中只允许使用死树代码,而且我可能不会打印出 10,000 行外部代码......