3928 - Abcd
De la Universitas MediaWiki
Cerința
Se dau numerele naturale num1, num2, num3 și num4 cu proprietatea că num1 < num2 < num3 < num4. Să se determine câte numere naturale divizibile cu 3 sunt în reuniunea de intervale [num1,num2] ∪ [num3,num4].
Date de intrare
Programul citește de la tastatură numerele naturale num1, num2, num3, num4.
Date de ieșire
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse". În următorul rând se va afișa pe ecran numărul de numere naturale divizibile cu 3 din [num1,num2] ∪ [num3,num4].
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Nu au fost respectate cerintele impuse".
Restricții și precizări
- 2 ⩽ num1 < num2 < num3 < num4 ⩽ 2000000000
Exemplu 1
- Intrare
- 2
- 7
- 10
- 18
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- 5
Exemplu 2
- Intrare
- 1
- 7
- 10
- 18
- Ieșire
- Nu au fost respectate cerintele impuse
Rezolvare
# 3928 - abcd
def validare(num1, num2, num3, num4):
# Daca datele sunt invalide v-om face raise la eroarea ValueError
conditii = (
num1 >= 2, num2 > num1,
num3 > num2, num4 > num3,
num4 <= 2000000000
)
if not all(conditii):
raise ValueError
def abcd(num1, num2, num3, num4):
# Numarul de numere divizibile cu 3 din intervalul [num1, num2]
# este egal cu x-y, unde:
# x este numarul de numere divizibile cu 3 din intervalul [1, num2]
# y este numarul de numere divizibile cu 3 din intervalul [1, num1-1]
# x = num2 // 3
# y = (num1 - 1) // 3
#
# Acelasi principiu se foloseste si la intervalul [num3, num4]
numere_div_3 = 0
numere_div_3 += num2 // 3 - (num1 - 1) // 3
numere_div_3 += num4 // 3 - (num3 - 1) // 3
print(numere_div_3)
if __name__ == '__main__':
# Citim de la tastatura numerele cerute
num1 = int(input())
num2 = int(input())
num3 = int(input())
num4 = int(input())
# Verificam daca datele introduse sunt valide
# daca nu afisam mesajul corespunsador
try:
validare(num1, num2, num3, num4)
except ValueError:
print("Nu au fost respectate cerintele impuse")
else:
print("Datele de intrare corespund restricțiilor impuse")
abcd(num1, num2, num3, num4)