0968 - Copac: Difference between revisions
No edit summary |
No edit summary |
||
Line 28: | Line 28: | ||
* 0 ≤ n ≤ 45 | * 0 ≤ n ≤ 45 | ||
== Exemplul 1 == | |||
Intrare | |||
2 | |||
Ieșire | |||
20 25 36 | |||
== Explicație == | == Explicație == | ||
Copacul va avea peste n=2 zile: 20 ramuri de argint, 25 ramuri de aur, 36 ramuri de rubin | Copacul va avea peste n=2 zile: 20 ramuri de argint, 25 ramuri de aur, 36 ramuri de rubin | ||
== Exemplul 2 == | == Exemplul 2 == | ||
Line 41: | Line 42: | ||
Ieșire Numărul introdus nu respectă restricțiile (0 ≤ n ≤ 45). | Ieșire Numărul introdus nu respectă restricțiile (0 ≤ n ≤ 45). | ||
= Explicație = | |||
Copacul va avea peste <code>n=10</code> zile: <code>13001</code> ramuri de argint, <code>16212</code> ramuri de aur, <code>23427</code> ramuri de rubin | |||
== Rezolvare == | == Rezolvare == |
Latest revision as of 20:35, 9 December 2023
Enunț[edit | edit source]
În grădina din palatul lui Făt-Frumos a răsărit tulpina fragedă a unui copăcel. Impresionat de gingăşia lui, Făt-Frumos dădu fuga la izvorul fermecat şi aduse nişte apă vie cu care udă copăcelul.
A doua zi, surpriză mare! Copăcelului i-au crescut trei ramuri minunate: una de argint, una de aur şi alta de rubin. Făt-Frumos, fericit, dădu din nou fuga la izvorul fermecat şi aduse apă vie pentru copăcel.
A treia zi, surpriză şi mai mare! Ramura de argint s-a transformat în trei ramuri noi: una de argint, una de aur şi una de rubin. Ramura de aur s-a transformat în două ramuri noi: una de argint şi alta de rubin. Ramura de rubin s-a transformat în două ramuri noi: una de aur şi una de rubin.
Şi în a patra zi, Făt-Frumos observă că fiecare ramură de argint s-a transformat în trei ramuri noi: una de argint, una de aur şi una de rubin; fiecare ramură de aur s-a transformat în două ramuri noi: una de argint şi alta de rubin; fiecare ramură de rubin s-a transformat în două ramuri noi: una de aur şi una de rubin.
Copăcelul era mai bogat şi mai frumos. Strălucea ca un soare, lumina lui ajungând până la palatul Zmeului-Zmeilor.
Zmeul-Zmeilor se îndreptă ca fulgerul spre palatul lui Făt-Frumos. Vroia copacul. Dar cum să facă? Dacă s-ar lupta cu Făt-Frumos, ar pierde lupta. Mereu s-a întâmplat aşa. Se gândi, se gândi… şi exact când a ajuns în faţa lui Făt-Frumos i-a venit o idee spunându-i acestuia:
- Făt-Frumos, dacă îmi vei spune câte ramuri de argint, câte ramuri de aur şi câte ramuri de rubin va avea copacul peste n
zile începând din ziua asta, atunci copacul va rămâne al tău. De nu, al meu va fi!
Ştiind că ramurile copacului se transformă şi în zilele următoare la fel ca în ziua a patra, ajutaţi-l pe Făt-Frumos să găsească răspunsul la întrebare astfel încât copacul să rămână al lui.
Cerința[edit | edit source]
Scrieţi un program care citeşte un număr natural n
şi care să determine şi să afişeze trei numere naturale reprezentând numărul de ramuri de argint, respectiv de aur şi de rubin pe care le va avea copacul peste n
zile, în acestă ordine.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n
.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran cele trei numere, în ordinea cerută, separate prin exact un spațiu.
Restricții și precizări[edit | edit source]
- 0 ≤ n ≤ 45
Exemplul 1[edit | edit source]
Intrare
2
Ieșire
20 25 36
Explicație[edit | edit source]
Copacul va avea peste n=2 zile: 20 ramuri de argint, 25 ramuri de aur, 36 ramuri de rubin
Exemplul 2[edit | edit source]
Intrare 46
Ieșire Numărul introdus nu respectă restricțiile (0 ≤ n ≤ 45).
Explicație[edit | edit source]
Copacul va avea peste n=10
zile: 13001
ramuri de argint, 16212
ramuri de aur, 23427
ramuri de rubin
Rezolvare[edit | edit source]
<syntaxhighlight lang="python3" line="1"> def verifica_restrictii(n):
return 0 <= n <= 45
def calculeaza_ramuri_copac(n):
if not verifica_restrictii(n): print("Numărul introdus nu respectă restricțiile (0 ≤ n ≤ 45).") return
if n == 0: return 4, 5, 7
ramuri_argint = 4 ramuri_aur = 5 ramuri_rubin = 7
zi = 1
while zi <= n: ramuri_argint_nou = ramuri_argint + ramuri_aur ramuri_aur_nou = ramuri_argint + ramuri_rubin ramuri_rubin_nou = ramuri_argint + ramuri_aur + ramuri_rubin
ramuri_argint, ramuri_aur, ramuri_rubin = ramuri_argint_nou, ramuri_aur_nou, ramuri_rubin_nou
zi += 1
return ramuri_argint, ramuri_aur, ramuri_rubin
def main():
n = int(input("Introduceți numărul n (0 ≤ n ≤ 45): ")) rezultate = calculeaza_ramuri_copac(n) if rezultate: print(*rezultate) # Afiseaza cele trei numere separate printr-un spatiu
if __name__ == "__main__":
main()
</syntaxhighlight>