4226 - Divizibil
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ă numerele naturale n x y p și apoi n perechi de numere Xi, Yi naturale care reprezintă numărul de persoane care au urcat, respectiv coborât la stația i.
Date de ieșire
Dacă p = 1, atunci se va rezolva numai cerința a). În acest caz, se vor scrie pe aceeași linie 3 numere separate prin câte un spațiu, cu semnificația din enunț.
Dacă p = 2, atunci se va rezolva numai cerința b). În acest caz, se va scrie pe prima linie DA dacă autobuzul este aglomerat, respectiv NU dacă autobuzul nu este aglomerat.
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>