4226 - Divizibil: Diferență între versiuni
(Nu s-au afișat 7 versiuni intermediare efectuate de același utilizator) | |||
Linia 9: | Linia 9: | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul va afișa pe ecran numărul '''ct''', reprezentând numărul cerut. | Programul va afișa pe ecran numărul '''ct''', reprezentând numărul cerut și mesajul "Datele introduse corespund cerintelor." În caz contrar programul va afișa mesajul "Datele introduse nu corespund cerintelor." | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
Linia 19: | Linia 19: | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
: | : Introduceți cerința: | ||
: | 1 | ||
: 2 | : Introduceți numărul total: | ||
: | 10 | ||
: | : Introduceți a: | ||
2 | |||
: Introduceți b: | |||
3 | |||
; Ieșire | ; Ieșire | ||
: | : Datele introduse corespund cerintelor. | ||
: 3 | |||
<br> | <br> | ||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intrare | ; Intrare | ||
: | : Introduceți cerința: | ||
: 3 | 2 | ||
: | : Introduceți numărul total: | ||
10 | |||
: | : Introduceți a: | ||
3 | |||
: Introduceți b: | |||
5 | |||
: Introduceți c: | |||
7 | |||
; Ieșire | ; Ieșire | ||
: | : Datele introduse corespund cerintelor. | ||
: 4 | |||
<br> | <br> | ||
Linia 58: | Linia 66: | ||
def validate_cerinta(cerinta): | def validate_cerinta(cerinta): | ||
if cerinta not in [1, 2]: | if cerinta not in [1, 2]: | ||
print(" | print("Datele introduse nu corespund cerintelor.") | ||
return False | return False | ||
return True | return True | ||
Linia 65: | Linia 73: | ||
def validate_n(n): | def validate_n(n): | ||
if not 1 <= n <= 1000000000: | if not 1 <= n <= 1000000000: | ||
print(" | print("Datele introduse nu corespund cerintelor.") | ||
return False | return False | ||
return True | return True | ||
Linia 72: | Linia 80: | ||
def validate_variabila(variabila): | def validate_variabila(variabila): | ||
if not 2 <= variabila <= 9: | if not 2 <= variabila <= 9: | ||
print(" | print("Datele introduse nu corespund cerintelor.") | ||
return False | return False | ||
return True | return True | ||
Linia 79: | Linia 87: | ||
def validate_a_b_c(a, b, c): | def validate_a_b_c(a, b, c): | ||
if not all([is_prime(i) for i in [a, b, c]]): | if not all([is_prime(i) for i in [a, b, c]]): | ||
print(" | print("Datele introduse nu corespund cerintelor.") | ||
return False | return False | ||
return True | return True | ||
Linia 93: | Linia 101: | ||
if __name__ == '__main__': | |||
print("Introduceți cerința:") | print("Introduceți cerința:") | ||
cerinta = int(input()) | cerinta = int(input()) | ||
if not validate_cerinta(cerinta): | if not validate_cerinta(cerinta): | ||
exit() | |||
print("Introduceți numărul total:") | print("Introduceți numărul total:") | ||
n = int(input()) | n = int(input()) | ||
if not validate_n(n): | if not validate_n(n): | ||
exit() | |||
if cerinta == 1: | if cerinta == 1: | ||
print("Introduceți a:") | print("Introduceți a:") | ||
Linia 108: | Linia 116: | ||
b = int(input()) | b = int(input()) | ||
if not all([validate_variabila(i) for i in [a, b]]): | if not all([validate_variabila(i) for i in [a, b]]): | ||
exit() | |||
rezultat = calculeaza_rezultatul(cerinta, n, a, b) | rezultat = calculeaza_rezultatul(cerinta, n, a, b) | ||
elif cerinta == 2: | elif cerinta == 2: | ||
Linia 118: | Linia 126: | ||
c = int(input()) | c = int(input()) | ||
if not all([validate_variabila(i) for i in [a, b, c]]): | if not all([validate_variabila(i) for i in [a, b, c]]): | ||
exit() | |||
if not validate_a_b_c(a, b, c): | if not validate_a_b_c(a, b, c): | ||
exit() | |||
rezultat = calculeaza_rezultatul(cerinta, n, a, b, c) | rezultat = calculeaza_rezultatul(cerinta, n, a, b, c) | ||
else: | else: | ||
rezultat = n | rezultat = n | ||
print(" | print("Datele introduse corespund cerintelor.\n",rezultat) | ||
</syntaxhighlight> | |||
== 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ă, blocul '''if __name__ == "__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 curentă din 12 mai 2023 13:58
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 și mesajul "Datele introduse corespund cerintelor." În caz contrar programul va afișa mesajul "Datele introduse nu corespund cerintelor."
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
- Datele introduse corespund cerintelor.
- 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
- Datele introduse corespund cerintelor.
- 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("Datele introduse nu corespund cerintelor.")
return False
return True
def validate_n(n):
if not 1 <= n <= 1000000000:
print("Datele introduse nu corespund cerintelor.")
return False
return True
def validate_variabila(variabila):
if not 2 <= variabila <= 9:
print("Datele introduse nu corespund cerintelor.")
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("Datele introduse nu corespund cerintelor.")
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
if __name__ == '__main__':
print("Introduceți cerința:")
cerinta = int(input())
if not validate_cerinta(cerinta):
exit()
print("Introduceți numărul total:")
n = int(input())
if not validate_n(n):
exit()
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]]):
exit()
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]]):
exit()
if not validate_a_b_c(a, b, c):
exit()
rezultat = calculeaza_rezultatul(cerinta, n, a, b, c)
else:
rezultat = n
print("Datele introduse corespund cerintelor.\n",rezultat)
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ă, blocul if __name__ == "__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.