2^1000 O.o
-
Ich muss die Quersumme der Zahl 2^1000 berechnen.
Das ist wie gesagt ne Aufgabe aus dem Projekt Euler.Aber danke, ich werde mir alle Vorschläge ganauer anschauen (ich wusste garnicht mal, dass es spezielle libs für große Zahlen gibt :))
Aber sehr interessant ist die Möglichkeit mit Int-Vektoren... (das wird ne gute Übung)

-
nimm dir die biginteger lib
hab viele aufgaben damit gemeistert
ist zwar nicht das schnellste aber es reicht...
-
Wenn es nur 2^1000 sein soll, reicht schon ein naiver Ansatz... z.B. ein char-Array mit den Ziffern, die du dann 1000 mal verdoppelst (und den Übertrag verrechnest).
-
Die Quersumme ist 7. Falls denn die Quersumme der Quersumme etc gewünscht ist:
#include <iostream> int main(int argc, char *argv[]){ int quers[] = {1,2,4,8,7,5}; int idx = 1000 % 6; std::cout << "Of " << 1000 << ": " << quers[idx] << std::endl; }Etwas einfacher als irgendwelche Libs zu benutzen.

-
hmm... Erklär ma pls, Fellhuhn ^^
-
die Quersumme von 2^10 ist 7... das würde bedeuten dass die Zahl 2^1000 zum großen Teil aus 0 besteht...
Würde mich mal interessieren wie du auf die Quersumme kommst

-
Das ist die iterierte Quersumme. Hat er ja auch geschrieben.
Ich überlege seit gestern, ob man die Quersumme von 2^1000 auch ohne Bignums rauskriegen kann. Die letzte Stelle ist 6, aber dann?

-
1366, zum Nachzählen:
10715086071862673209484250490600018105
61404811705533607443750388370351051124
93612249319837881569585812759467291755
31468251871452856923140435984577574698
57480393456777482423098542107460506237
11418779541821530464749835819412673987
67559165543946077062914571196477686542
167660429831652624386837205668069376
-
Habe nirgendwo das Wort "iteriert" gesehen. Und der Threadersteller sucht meiner Ansicht nach auch die Quersumme und nicht die iterierte Quersumme
Aber jetzt wo Fellhuhn die Zahl postet machen seine Aussagen natürlich Sinn 
-
it0101@loggedoff schrieb:
Habe nirgendwo das Wort "iteriert" gesehen.
"die Quersumme der Quersumme etc" stand da.
-
Mir fiel das Wort nicht mehr ein. Iterierte Quersumme wäre natürlich passend gewesen.
-
Wobei die "Quersumme der Quersumme" bei 1366 immernoch nicht ausreicht, da das erstmal das Ergebnis 16 liefert

Aber das is total am Thema vorbei, da der Threadersteller nur die einfache Quersumme sucht, und da liegt das Problem eben nicht in der von Fellhuhn geposteten Berechnung der Quersumme der Quersumme, sondern in dem außergewöhnlichen Zahlenbereich

-
Auf die Schnelle ohne Libs und ohne algorithms etc.:
std::vector<int> nums; nums.push_back(1); for(int i = 1; i <= 1000; i++){ for(int n = 0; n < nums.size(); n++){ nums[n] *= 2; } for(int n = 0; n < nums.size(); n++){ while (nums[n] >= 10){ nums[n] -= 10; if (n + 1 == nums.size()){ nums.push_back(1); }else{ nums[n+1]++; } } } } int sum = 0; for(int i = nums.size() - 1; i >= 0; i--){ sum += nums[i]; } std::cout << "Sum of digits " << 1000 << ": " << sum << std::endl;@offtopic: Deswegen ja auch das "etc."

-
jo ich denke das is wohl die beste lösung...
-
Danke,...
