4029 - Depozit
Cerința
Într-un depozit, managerul dorește să organizeze mărfurile în diverse combinații pe rafturi. Fiecare raft poate conține 1, 2 sau 3 unități de marfă. Să se determine în câte moduri diferite poate managerul să aranjeze mărfurile pe rafturi pentru a avea un total de n unități de marfă.
Date de intrare
Programul citește de la tastatură un număr întreg n reprezentând numărul total de unități de marfă pe care managerul dorește să le aranjeze pe rafturi.
Date de ieșire
Pe ecran se va afișa numărul de moduri diferite în care managerul poate aranja mărfurile pe rafturi pentru a avea un total de n unități de marfă.
Restricții și precizări
- 1 ⩽ n ⩽ 30
Exemplu 1
- Intrare
4
- Iesire
7
Rezolvare
<syntaxhighlight lang="python" line> def citeste_date():
try: n = int(input("Introduceți numărul total de unități de marfă (n): ")) return n except ValueError: return None
def valideaza_date(n):
return 1 <= n <= 30
def numara_moduri(n):
if n == 0: return 0 elif n == 1: return 1 elif n == 2: return 2 elif n == 3: return 4
moduri = [0] * (n + 1) moduri[0] = 1 moduri[1] = 1 moduri[2] = 2 moduri[3] = 4
for i in range(4, n + 1): moduri[i] = moduri[i - 1] + moduri[i - 2] + moduri[i - 3]
return moduri[n]
def main():
n = citeste_date() if n is None or not valideaza_date(n): print("Datele de intrare nu corespund restricțiilor impuse.") return print("Datele de intrare corespund restricțiilor impuse.") moduri = numara_moduri(n) print(moduri)
if __name__ == "__main__":
main()
</syntaxhighlight>