4226 - Divizibil: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
Line 9: | Line 9: | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul va afișa pe ecran numărul ct, reprezentând numărul cerut. | |||
== Restricţii şi precizări == | == Restricţii şi precizări == |
Revision as of 13:34, 2 April 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
- 1 ⩽ n ⩽ 1000
- 1 ⩽ x ⩽ n
- 1 ⩽ y ⩽ 10000
- 0 ⩽ Xi, Yi ⩽ 2000
Exemplul 1
- Intrare
- 5 2 10 1
- 3 0
- 2 1
- 5 6
- 4 3
- 3 1
- Ieșire
- 17 11 6
Exemplul 2
- Intrare
- 5 2 10 2
- 3 0
- 2 1
- 5 6
- 4 3
- 3 1
- Ieșire
- NU
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("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 if not validate_a_b_c(a, b, c): 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()
</syntaxhighlight>