4226 - Divizibil: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
Line 66: | Line 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 | ||
Line 73: | Line 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 | ||
Line 80: | Line 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 | ||
Line 87: | Line 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 | ||
Line 101: | Line 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:") | ||
Line 116: | Line 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: | ||
Line 126: | Line 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> | </syntaxhighlight> |
Revision as of 13:56, 12 May 2023
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
- 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
<syntaxhighlight lang="python" line>
- 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)
</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ă, 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.