Kattis-Problem: Pyramiden bauen – warum ist das nicht richtig?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Kattis-Problem: Pyramiden bauen – warum ist das nicht richtig?

Post by Anonymous »

Ich versuche, dieses Problem hier in C# zu lösen:
https://open.kattis.com/submissions/8340306 (Bearbeiten: Vollständige Frage unten)
Kurz gesagt: Give ist eine Anzahl von Bausteinen. Ziel ist herauszufinden, wie hoch ich mit diesen Bausteinen eine 3D-Pyramide bauen kann. Die oberste Ebene hat 1 Stein, die 2. Ebene von oben 9 Steine, die 3. 25 Steine ​​und so weiter.
Ich dachte, ich hätte es gelöst und mit dem gegebenen Beispiel ist es richtig. Es ist auch in allen Berechnungen, die ich durchgeführt habe, korrekt. Dennoch: Von den 5 Beispielläufen sind davon nur 3 ausgenommen.

Bearbeiten - die vollständige Frage: Beim Einleiten eines Wenn Sie ein größeres Projekt planen, etwa
den Bau einer Pyramide, sollten Sie es sich am besten zweimal überlegen. Ihre heutige Aufgabe besteht darin,
ein Programm zu schreiben, das berechnet, wie hoch eine Pyramide bei einer
bestimmten Anzahl von Steinblöcken gebaut werden kann.
Wir gehen davon aus, dass die Pyramide kompakt gebaut werden soll, d. h. es sind keine Hohlräume im Inneren vorhanden. Darüber hinaus gehen wir davon aus, dass es nach dem
Prinzip in Abbildung 1 aufgebaut ist. Jede Schicht ist quadratisch, mit einer Seitenlänge, die
zwei kürzer ist als die darunter liegende. Die oberste Ebene besteht immer aus einem
einzelnen Block.
Image

Es ist in Ordnung, wenn Sie noch Blöcke übrig haben, solange Sie eine
vollständige Pyramide bauen.
Eingabe Die erste und einzige Zeile der Eingabe enthält eine Ganzzahl N
(1≤N≤100000000), die Anzahl der Blöcke, die Ihnen zur Verfügung stehen.
Ausgabe Geben Sie eine einzelne Ganzzahl aus – die maximale Höhe einer Pyramide, diekann mit mindestens N Blöcken gebaut werden.
Image


Das Ergebnis meiner Lösung:
Image

Hier ist Mein Code – bitte seien Sie vorsichtig, ich lerne gerade :)

Code: Select all

    public static void Main()
{
int bloecke = int.Parse(Console.ReadLine());
int neueBloecke = 1; // Bloecke, die für die neue Ebene benötigt werden
int sumBloecke = 1; // Blöcke in Summe
int seitenLaenge = 1; // Seitenlänge der Ebene
int ebene = 1; // Auf welcher Ebene wir uns aktuell befinden

while (sumBloecke < bloecke)
{
// Wenn wir weniger als 10 Blöcke haben, brauchen wir gar nicht anzufangen > wir haben 1 Ebene
if (bloecke < 10)
{
ebene = 1;
break;
}

// Andernfalls legen wir los
seitenLaenge += 2;
neueBloecke = seitenLaenge * seitenLaenge;
sumBloecke += neueBloecke;

if (sumBloecke>=bloecke)
{
break;
} else
{
ebene++;
}

}

Console.Write(ebene);

}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post