4226 - Divizibil: Diferență între versiuni

De la Universitas MediaWiki
Linia 138: Linia 138:


== Explicație rezolvare ==
== Explicație rezolvare ==
Acesta este un program care primește de la utilizator o cerință și o serie de numere și apoi calculează și afișează un rezultat în funcție de cerință și numerele introduse.
Funcția principală a programului este '''calculeaza_rezultatul()''', care primește ca parametri o cerință și una sau trei variabile, a, b și c, în funcție de cerință. În funcție de cerință, programul efectuează diferite operații matematice pe numărul total n și pe variabilele a, b și c și calculează un rezultat.
Celelalte funcții din program, cum ar fi '''validate_cerinta()''', '''validate_n()''', '''validate_variabila()''' și '''validate_a_b_c()''', sunt folosite pentru a valida input-ul utilizatorului și a asigura că acesta este corect și se află în limitele admise. Funcția '''is_prime()''' este utilizată pentru a verifica dacă o variabilă este primă.
În cele din urmă, funcția '''main()''' primește input-ul de la utilizator, validează datele introduse și apelează funcția '''calculeaza_rezultatul()''' pentru a calcula rezultatul cerut, apoi afișează rezultatul.

Versiunea de la data 2 aprilie 2023 13:48

Sursa: [1]

Cerinţa

Teodora vă roagă sa o ajutați cu intrebările si va recompenseaza cu 100 de puncte.

Date de intrare

Programul citește de la tastatură numărul t ce poate fi 1 sau 2. Dacă t este 1 se vor citi trei numere n, c1, c2 cu semnificația din enunț. Dacă t este 2 se vor citi patru numere n, c1, c2, c3 cu semnificația din enunț.

Date de ieșire

Programul va afișa pe ecran numărul ct, reprezentând numărul cerut.

Restricţii şi precizări

  • t poate fi 1 sau 2
  • 1 ⩽ n ⩽ 1.000.000.000
  • 2 ⩽ c1, c2, c3 ⩽ 9
  • oricare două cifre sunt prime intre ele

Exemplul 1

Intrare
Introduceți cerința:

1

Introduceți numărul total:

10

Introduceți a:

2

Introduceți b:

3

Ieșire
Rezultatul este: 3


Exemplul 2

Intrare
Introduceți cerința:

2

Introduceți numărul total:

10

Introduceți a:

3

Introduceți b:

5

Introduceți c:

7

Ieșire
Rezultatul este: 4


Rezolvare

#4226
def calculeaza_rezultatul(cerinta, n, a=0, b=0, c=0):
    rezultat = n
    if cerinta == 1:
        rezultat = rezultat - (n // a) - (n // b)
        rezultat = rezultat + (n // (a * b))
    elif cerinta == 2:
        rezultat = rezultat - (n // a) - (n // b) - (n // c)
        rezultat = rezultat + (n // (a * b)) + (n // (b * c)) + (n // (a * c))
        rezultat = rezultat - (n // (a * b * c))
    return rezultat


def validate_cerinta(cerinta):
    if cerinta not in [1, 2]:
        print("Cerinta trebuie sa fie 1 sau 2.")
        return False
    return True


def validate_n(n):
    if not 1 <= n <= 1000000000:
        print("n trebuie sa fie intre 1 si 1000000000.")
        return False
    return True


def validate_variabila(variabila):
    if not 2 <= variabila <= 9:
        print("Variabila trebuie sa fie intre 2 si 9.")
        return False
    return True


def validate_a_b_c(a, b, c):
    if not all([is_prime(i) for i in [a, b, c]]):
        print("Variabilele a, b si c trebuie sa fie prime intre ele.")
        return False
    return True


def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True


def main():
    print("Introduceți cerința:")
    cerinta = int(input())
    if not validate_cerinta(cerinta):
        return
    print("Introduceți numărul total:")
    n = int(input())
    if not validate_n(n):
        return
    if cerinta == 1:
        print("Introduceți a:")
        a = int(input())
        print("Introduceți b:")
        b = int(input())
        if not all([validate_variabila(i) for i in [a, b]]):
            return
        rezultat = calculeaza_rezultatul(cerinta, n, a, b)
    elif cerinta == 2:
        print("Introduceți a:")
        a = int(input())
        print("Introduceți b:")
        b = int(input())
        print("Introduceți c:")
        c = int(input())
        if not all([validate_variabila(i) for i in [a, b, c]]):
            return
        if not validate_a_b_c(a, b, c):
            return
        rezultat = calculeaza_rezultatul(cerinta, n, a, b, c)
    else:
        rezultat = n
    print("Rezultatul este:", rezultat)

main()

Explicație rezolvare

Acesta este un program care primește de la utilizator o cerință și o serie de numere și apoi calculează și afișează un rezultat în funcție de cerință și numerele introduse.

Funcția principală a programului este calculeaza_rezultatul(), care primește ca parametri o cerință și una sau trei variabile, a, b și c, în funcție de cerință. În funcție de cerință, programul efectuează diferite operații matematice pe numărul total n și pe variabilele a, b și c și calculează un rezultat.

Celelalte funcții din program, cum ar fi validate_cerinta(), validate_n(), validate_variabila() și validate_a_b_c(), sunt folosite pentru a valida input-ul utilizatorului și a asigura că acesta este corect și se află în limitele admise. Funcția is_prime() este utilizată pentru a verifica dacă o variabilă este primă.

În cele din urmă, funcția main() primește input-ul de la utilizator, validează datele introduse și apelează funcția calculeaza_rezultatul() pentru a calcula rezultatul cerut, apoi afișează rezultatul.