4006 - Partitie AB

From Bitnami MediaWiki
Revision as of 14:33, 15 December 2023 by Andrada378 (talk | contribs) (Pagină nouă: Cerinta Se dau trei numere naturale n a b, 1 ≤ a < b < n. Să se determine o modalitate de a-l scrie pe n ca sumă de termeni egali cu a sau b în care numărul de termeni egali cu a este maxim. Date de intrare Programul citește de la tastatură numerele n a b. Date de iesire Programul va afișa pe ecran un șir de numere ordonate crescător, reprezentând termenii ceruți. Restrictii si precizari: 1 ≤ n ≤ 1.000.000 1 ≤ a < b ≤ 1000 pentru toate datele de...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinta

Se dau trei numere naturale n a b, 1 ≤ a < b < n. Să se determine o modalitate de a-l scrie pe n ca sumă de termeni egali cu a sau b în care numărul de termeni egali cu a este maxim.

Date de intrare

Programul citește de la tastatură numerele n a b.

Date de iesire

Programul va afișa pe ecran un șir de numere ordonate crescător, reprezentând termenii ceruți.

Restrictii si precizari:

1 ≤ n ≤ 1.000.000

1 ≤ a < b ≤ 1000

pentru toate datele de test n poate fi scris ca sumă de termeni egali cu a și b.

Exemplu

Intrare

40 3 5

Iesire

3 3 3 3 3 3 3 3 3 3 5 5

Rezolvare

def scrie_n_ca_suma(n, a, b):

    if n - b < b:  # Verificăm dacă adăugând b depășim n

        a, b = b, a  # Schimbăm a și b pentru a ne asigura că b este mai mare

    rezultat = []

    termeni_a = (n - b) // a  # Numărul maxim de termeni egali cu a

    # Adăugăm termenii egali cu a și apoi cu b pentru a forma suma n

    for _ in range(termeni_a):

        rezultat.append(a)

    for _ in range((n - b) - (termeni_a * a)):

        rezultat.append(b)

    return sorted(rezultat)  # Returnăm șirul de termeni ordonat crescător

def main():

    n = int(input("Introduceți valoarea lui n: "))

    a = int(input("Introduceți valoarea lui a: "))

    b = int(input("Introduceți valoarea lui b: "))

    if 1 <= a < b < n:

        rezultat = scrie_n_ca_suma(n, a, b)

        print("Termenii ceruți:", rezultat)

    else:

        print("Verificați condițiile: 1 ≤ a < b < n!")

if __name__ == "__main__":

    main()