Hallo,
ich habe folgendes Problem. Ich "spiele" gerade auf enigmagroup.org die JavaScript Missionen und bin inzwischen bei der letzten angekommen.
Das Passwort berechnet sich dabei aus dem aktuellen Jahr, man kommt also nur weiter wenn man sich zufällig gerade in diesem Jahr befindet oder das gesuchte Jahr herausfindet und es der URL anhängt. Hier der Code (JavaScript):
Ich habe nun versucht mit diesem Code eine Lösung in C++ zu schreiben und bin daran gescheitert.
Ich habe einfach die Jahre hochgezählt und immer pass berechnet und dann mit der langen Zahl (wie in der Routine) verglichen.
Das Problem ist jedoch (und das ist mir erst ziemlich spät eingefallen), dass die Zahl für jeden Datentyp zu groß ist :-(
Ich dachte mir dann, ich könnte die Zahl einfach durch z.B. 1.000.000 dividieren und die restlichen Zahlen als Nachkommestellen mitführen.
Allerdings kommt dabei folgendes raus:
Ausgabe:
Wie wird denn aus der ...6,0... eine ...4,0... ?
Hat irgendjmd eine Idee wie ich mein Problem lösen könnte?
Grüße
ich habe folgendes Problem. Ich "spiele" gerade auf enigmagroup.org die JavaScript Missionen und bin inzwischen bei der letzten angekommen.
Das Passwort berechnet sich dabei aus dem aktuellen Jahr, man kommt also nur weiter wenn man sich zufällig gerade in diesem Jahr befindet oder das gesuchte Jahr herausfindet und es der URL anhängt. Hier der Code (JavaScript):
Code:
date = new Date();
year = date.getYear();
pass = 1337;
for(i = 1; i <= year; i++){
pass += year * i * year;
}
if(pass == 318338237039211050000){
alert("Good job!");
window.location.href = year + ".php";
}
else{
alert("Sorry, did you fail already?!");
window.location.href = "./index.php";
}
Ich habe nun versucht mit diesem Code eine Lösung in C++ zu schreiben und bin daran gescheitert.
Ich habe einfach die Jahre hochgezählt und immer pass berechnet und dann mit der langen Zahl (wie in der Routine) verglichen.
Das Problem ist jedoch (und das ist mir erst ziemlich spät eingefallen), dass die Zahl für jeden Datentyp zu groß ist :-(
Ich dachte mir dann, ich könnte die Zahl einfach durch z.B. 1.000.000 dividieren und die restlichen Zahlen als Nachkommestellen mitführen.
Allerdings kommt dabei folgendes raus:
Code:
double test=31833823703921106.0000;
printf ("%f", test);
Ausgabe:
Code:
31833823703921104.000000
Wie wird denn aus der ...6,0... eine ...4,0... ?
Hat irgendjmd eine Idee wie ich mein Problem lösen könnte?
Grüße