4029 - Depozit

De la Universitas MediaWiki
Versiunea din 2 iunie 2024 19:41, autor: Benzar Ioan (discuție | contribuții) (Pagină nouă: == 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...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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

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()