Двойная точность в 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 строк внешнего кода ...

Ответы на вопрос(7)

Ваш ответ на вопрос