Java Schachbrett und Reiskörner in Java HILFE!

5 Antworten

Die "Formel" ist ganz einfach n = 2^63
da man mit 2^0 (1) für das 1. Feld anfängt!
Wie man das programmtechnisch macht, weis ich nicht. Wie beim Taschenrechner müsste man aber auch größere Zahlen mit E 10 = 10^10 einschreiben können.


Aurel8317648  06.12.2013, 00:22

Achtung: Ergebnis: 2^64 - 1

2
JotEs  06.12.2013, 11:29

2^63 ist die Anzahl der Reiskörner, die auf dem 64. Feld zu liegen kommen. Die Summe der Reiskörner auf allen 64 Feldern hingegen ist 2^64 - 1

1
UlrichNagel  06.12.2013, 12:26
@JotEs

Danke JotEs, wieder mal zu kurz gedacht, vermaledeites Gehirn!

0
Franz1957  06.12.2013, 14:41
@UlrichNagel

Die Fragestellung ist gar nicht klar. Dem Leser wurde selbst überlassen, zu wissen, was "das Problem" ist. Es wurde weder nach der Zahl der Reiskörner auf dem letzten Feld gefragt noch nach der Zahl der Reiskörner auf dem ganzen Schachbrett. Es ist lediglich plausibel, daß letzeres gemeint sein dürfte, weil diese Reismenge laut Geschichte die Belohnung für den Erfinder sein sollte. Das ist keine Haarspalterei von mir. Wir können hier im Forum oft genug sehen, daß Schüler nicht verstehen, was der Lehrer überhaupt will, weil die Aufgabe verwaschen formuliert ist.

0
schuhmode  06.12.2013, 18:18
@Franz1957

Die Fragestellung ist gar nicht klar. Dem Leser wurde selbst überlassen, zu wissen, was "das Problem" ist.

"...der König möge ihm so viele Weizenkörner schenken, wie sich zusammen ergeben, wenn man auf das erste der 64 Felder des Schachbretts ein Weizenkorn legt, auf das zweite zwei, auf das dritte vier,..."

"zusammen" -> Summe. Finde ich klar genug.

0
Franz1957  08.12.2013, 14:53
@schuhmode

Ja, für Freizeit-Programmierung und Denksportaufgaben ist eine unklare Spezifikation kein Beinbruch und trägt für den, der es merkt, noch zum Tiefgang der Aufgabe bei. Wer aber professionell programmieren lernen will, der muß verstehen, daß man dem Auftraggeber so etwas nicht durchgehen lassen darf. Leuten, die nicht klipp und klar sagen können, was sie wollen, muß man auf die Sprünge helfen, sonst kommt man mit ihnen in Teufels Küche.

0
Franz1957  08.12.2013, 14:59
@Franz1957

Das gleiche gilt an der Schule. Lehrer, die verwaschene Aufgaben stellen und dann Noten auf "richtige" und "falsche" Lösungen geben, sind eine Zumutung. Schüler sollten sich das keinesfalls bieten lassen. Das muß uns jetzt hier aber nicht weiter belasten, denn es war von einer beruflichen oder schulischen Aufgabe ja nicht die Rede. Ich bitte dies nur als kritische Randnotiz zu verstehen.

0

also da du Big Integer nicht benutzen darfst, nimmst du String und bastelst dir dafür ne einfache multiplikationsmethode. Dann kannst du einfach eine schleife nehmen die 64x multipliziert. Alternativ kannst du auch die schleife nur bis zum eingegebenen Wert laufen lassen.

Zur Kontrolle:

Es sind insgesamt 2^64 - 1 = 18446744073709551615 ~ 1,84*10^19 Reiskörner.

Gruß, Helmut

19

siehe z.B.: Karatsuba-Algorithmus


Aurel8317648  06.12.2013, 00:22

Ergebnis: 2^64 - 1

0
Aurel8317648  06.12.2013, 00:55
@Aurel8317648

also die Rechenschritte irgendwie aufteilen, z.B. indem du die ganze Berechnung als wiederholte Addition von 2-en durchführst. Sobald die Summe dann einen gewissen Wert z.B 10 000 000 000 überschreitet, beginnst du wieder bei Null, erhöst aber den "10 000 000 000 - Block" um 1

0
Schreiben Sie ein Java-Programm »Schachbrett«, das es ermöglicht, das Problem Schachbrett zu lösen.

Unklare Aufgabenstellung. Worin besteht denn das "Problem Schachbrett"?