Я работаю над Project Euler, чтобы освежить свои навыки программирования на C ++ при подготовке к задачам программирования. У нас будет следующий семестр (так как они не позволяют нам использовать Python, бу!).
Я на # 16, и я пытаюсь найти способ сохранить реальную точность для 2¹ °кономИВ
Например:
int main(){
double num = pow(2, 1000);
printf("%.0f", num):
return 0;
}
отпечатков
10715086071862673209484250490600018105614050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Что отсутствует большая часть номеров (из питона):
1015 *
>>> 2**1000
10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L
Конечно, я могу написать программу с вкладышем Python 1
sum(int(_) for _ in str(2**1000))
, которая немедленно дает мне результат, но я пытаюсь найти егов C ++.Есть указатели?(ха-ха ...)
Редактировать:
Что-то вне стандартных библиотек для меня ничего не стоит - в этих соревнованиях разрешен только код мертвого дерева, и я, вероятно, не собираюсь печататьиз 10000 строк внешнего кода ...