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