4226 - Divizibil: Diferență între versiuni
De la Universitas MediaWiki
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 | ||
: | : Rezultatul este: 3 | ||
<br> | <br> | ||
Versiunea de la data 2 aprilie 2023 13:44
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
- 5 2 10 2
- 3 0
- 2 1
- 5 6
- 4 3
- 3 1
- Ieșire
- NU
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()