C# :: Aufgabe #385 :: Lösung #1
4 Lösungen
#385
Zahl ist Summe von Potenzwerten zur Basis 3
Anfänger - C#
von JKooP
- 18.04.2021 um 12:49 Uhr
Gegeben ist eine Integer-Zahl im Bereich von 1 bis 1.000.000.
Es soll geprüft werden, ob sich diese Zahl als Summe von Potenzwerten
zur Basis 3 darstellen lässt. Die Reihenfolge der Exponenten ist unerheblich.
Beispiele:
n = 12
Lösung: wahr => 12 = 3^1 + 3^2
n = 91
Lösung: Wahr => 3^0 + 3^2 + 3^4
n = 105
Lösung: Falsch
Erstelle eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false zurückgibt.
Viel Spaß
Es soll geprüft werden, ob sich diese Zahl als Summe von Potenzwerten
zur Basis 3 darstellen lässt. Die Reihenfolge der Exponenten ist unerheblich.
Beispiele:
n = 12
Lösung: wahr => 12 = 3^1 + 3^2
n = 91
Lösung: Wahr => 3^0 + 3^2 + 3^4
n = 105
Lösung: Falsch
Erstelle eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false zurückgibt.
Viel Spaß
#1
von dson (640 Punkte)
- 19.04.2021 um 19:33 Uhr
using System;
using System.Collections.Generic;
namespace potenzschreibweise_zu_drei
{
class Program
{
static void Main(string[] args)
{
int n = 91;
int zahl1 = n; //Zahl1 wird nur verwendet um den orginalen Wert ggf. nicht zu veränden.
int zahl2 = 0; //Dienst der entscheidung ob die Zahl einfach in 3er Potenzen geschrieben werden kann.
bool exit = false;
List<string> ausgabe = new List<string>();
while (zahl1 != 0)
{
for (int i = zahl1; i > 0; i--)
{
if (Math.Log(i, 3) % 1 == 0)
{
if (i == zahl2) //Muss eine 3er Potenz mehrfach verwendet werden, so ist die Start Zahl falsch und die Schleie wird beendet.
{
exit = true; //damit auch die While schlefie beendet wird, habe ich hier noch einen Zusätzlichen Wert, welcher vor der While schließen Klammer verwendet wird.
break;
}
ausgabe.Add("3^" + Math.Log(i, 3)); //Berechnet den Logarythmus mit einer Base von 3 (3^4 = 81 somit wird hier 4 zurück gegeben)
zahl1 = zahl1 - i;
zahl2 = i;
break;
}
}
if (exit == true)
{
break;
}
}
if (exit == true) //Wurde die Schleife mittels break beendet weil die Zahl mehere 3er Potenzen beinhaltet soll Falsch ausgegeben werden
{
Console.WriteLine("Lösung: Falsch");
}
else //ist die schleife ohne doppelte Potenz durchgelaufen ist die Lösung richtig und alle Ergebnisse werden ausgeben.
{
foreach (var item in ausgabe)
{
Console.WriteLine(item);
}
Console.WriteLine("Lösung: Wahr");
}
}
}
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
