Doppelte Genauigkeit in C ++ (oder pow (2, 1000))

Ich arbeite an Project Euler, um meine C ++ - Codierungsfähigkeiten zu verbessern, um mich auf die Programmierherausforderung (en) vorzubereiten, die wir im nächsten Semester haben werden (da wir Python nicht verwenden dürfen, boo!).

Ich bin auf # 16 und versuche einen Weg zu finden, um echte Präzision für 2¹ °°° @ zu erreiche

Zum Beispiel

int main(){
    double num = pow(2, 1000);
    printf("%.0f", num):
    return 0;
}

prints

10715086071862673209484250490600018105614050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Welche die meisten Zahlen fehlen (aus Python):

>>> 2**1000

10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376L

Granted, ich kann das Programm mit einem Python 1-Liner schreiben

sum(int(_) for _ in str(2**1000))

das gibt mir sofort das Ergebnis, aber ich versuche, einen Weg zu finden, es in C ++ zu tun. Irgendwelche Hinweise? (Haha...

Bearbeiten

Etwas außerhalb der Standardbibliotheken ist für mich wertlos - in diesen Wettbewerben ist nur toter Baum-Code erlaubt, und ich werde wahrscheinlich nicht 10.000 Zeilen externen Codes ausdrucken ...

Antworten auf die Frage(14)

Ihre Antwort auf die Frage