Märchenkönig Dodon

Neue Frage »

lumi Auf diesen Beitrag antworten »
Märchenkönig Dodon
Hallo,
gegeben ist folgendes Problem:
Der Märchenkönig Dodon hat in seiner Burg einen Kerker mit 1000 Zellen und je einem Gefangenen darin. Alle Zellen lassen sich mit demselben Schlüssel öffnen. Wird der Schlüssel einmal im Schloss umgedreht, ist die Tür offen. Dreht man ihn noch einmal herum ist die Tür wieder verschlossen usw..
Am Abend vor seinem Geburtstag lässt Dodon von einem Boten alle Zellentüren öffnen, denn er will den Gefangenen die Freiheit schenken. Die Wachen sorgen dafür, dass kein Gefangener vor 0:00 Uhr seine Zelle verlässt. Im Laufe des Abends vergisst Dodon seine Barmherzigkeit und schickt einen zweiten Boten, der den Schlüssel in jeder zweiten Tür - beginnend mit der zweiten - noch einmal herumdreht. Danach schickt er einen dritten Boten, der den Schlüssel in jedem dritten Schloss - beginnend mit dem dritten - umdreht, ... , dann einen k-ten Boten, der den Schlüssel in jedem k-ten
Schloss - beginnend mit dem k-ten - umdreht usw.. Um 0:00 Uhr Uhr dreht der 1000. Bote den Schlüssel in nur einer Tür - der 1000. - herum und alle Gefangenen, deren Zellentüren offen sind, dürfen gehen.
Welche Gefangenen sind es und warum bleiben gerade diese Zellen offen?

Für ein Kerker mit nur 10 Zellen kann man schnell heraus finden, dass nur die Zellen 4 und 9 offen bleiben.
Ich habe im Netz nach Ideen gesucht - überall wird aber mit Java oder C++ programiert - die Lösung sind alle Qaudratzahlen bis Tausend.
Warum ist das aber so? Habt ihr eine Idee für eine 7.-Klässlerin?
HAL 9000 Auf diesen Beitrag antworten »

Siehe hier und insbesondere die kurz darauf folgende einfache Erklärung für die ungeradzahlige Teilerzahl von Quadraten .
pc master race Auf diesen Beitrag antworten »
könig dodon
int[] zellen = new int[71];
int i, z;
for (i = 1; i <= 70; i = i + 1) {
for (z = i; z <= 70; z = z + i) {
if (zellen[z] == 0)
zellen[z] = 1;
else
zellen[z] = 0;
}
}
for (i = 1; i <= 70; i = i + 1) {
if (zellen[i] == 1)
// listBox1.Items.Add(i.ToString());
???.BackColor=System.Drawing.Color.LightGreen;
}
Neue Frage »
Antworten »



Verwandte Themen