Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Program na řešení rovnice x^3 + y^3 + z^3 = k

Aktivity
Avatar
Denisa Váňová:15.12.2019 20:05

Ahoj, budu ráda za jakékoliv naťuknutí k tomuto úkolu :

Napište program, který pro zadané číslo k najde všechna celočíselná řešení rovnice x3 + y3 + z3 = k větší než −100 a menší než 100. V případě, že v zadané množině řešení neexistuje, program vypíše, že řešení neexistuje.

Upřímně vůbec nevím, co s tím.

Máme to jako procvičování do základů programování, takže děláme opravdu jen základní a jednoduché věci.

Moc děkuji za jakoukoliv radu.

 
Odpovědět
15.12.2019 20:05
Avatar
Neaktivní uživatel:15.12.2019 20:59

Řekl bych, že prostě (ve třech zanořených cyklech) projdeš čísla od -100 do 100 a vyzkoušíš, jestli to platí, nebo ne (pokud ano, uložíš/vypíšeš kombinaci).

Nahoru Odpovědět
15.12.2019 20:59
Neaktivní uživatelský účet
Avatar
David Flieger:16.12.2019 5:12

Jedno řešení, jak již bylo řečeno, je projít všechny možnosti. Druhá je projít jen polovinu možností a to díky symetrii příkladu. Uděláš to tak, že v prvním cyklu projdeš všechna čísla x(-100;100), v druhém všechna y(-100;x) a ve třetím všechna z(-100;y).

 
Nahoru Odpovědět
16.12.2019 5:12
Avatar
Odpovídá na David Flieger
Neaktivní uživatel:16.12.2019 17:45

Jestli jsem neudělal nějakou hloupost, zredukuješ tím počet možností dokonce jen na šestinu ;-) (hold jsem ti nevěřil, že to má až takový dopad, a teď mám věřit něčemu takovému :-D )

Nahoru Odpovědět
16.12.2019 17:45
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
David Flieger:17.12.2019 4:18

To, že jsi mi nevěřil je v pořádku. A přijímám i to, že jsem se zmýlil. Ta šestina dává smysl, protože se pro každý kořen vyhneme permutacím (i,j,k), kterých je 6, ale pohlížel jsem na to geometricky a dokázal jsem si představit jen hranice množiny, tak jsem je spojil nejkratší cestou.

 
Nahoru Odpovědět
17.12.2019 4:18
Avatar
Denisa Váňová:22.12.2019 17:33

Díky moc, snad už jsem to konečně pochopila :)
Vytvořila jsem toto, tak snad to dává smysl.

k = int(input("Zadejte číslo:"))

reseni = False
for x in range(-100,100):
    for y in range(-100,100):
        for z in range(-100,100):
            if x**3+y**3+z**3 == k :
                print(x," ",y," ",z)
                reseni = True
if reseni == False :
    print("Nemá v zadaném intervalu řešení.")
 
Nahoru Odpovědět
22.12.2019 17:33
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.