3928 - Abcd: Difference between revisions
Pagină nouă: == 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ț... |
No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 7: | Line 7: | ||
Î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 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 " | Î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 == | == Restricții și precizări == | ||
* 2 ⩽ '''num1''' < '''num2''' < '''num3''' < '''num4''' ⩽ 2000000000 | * 2 ⩽ '''num1''' < '''num2''' < '''num3''' < '''num4''' ⩽ 2000000000 | ||
Line 32: | Line 32: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# 3928 - abcd | # 3928 - abcd | ||
def | def validare(num1, num2, num3, num4): | ||
# Daca datele sunt invalide v-om face raise la eroarea ValueError | |||
conditii = ( | conditii = ( | ||
Line 44: | Line 41: | ||
) | ) | ||
if all(conditii): | 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__': | if __name__ == '__main__': | ||
abcd() | # 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) | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 11:12, 23 May 2023
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură numerele naturale num1, num2, num3, num4.
Date de ieșire[edit | edit source]
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[edit | edit source]
- 2 ⩽ num1 < num2 < num3 < num4 ⩽ 2000000000
Exemplu 1[edit | edit source]
- Intrare
- 2
- 7
- 10
- 18
- Ieșire
- Datele de intrare corespund restricțiilor impuse
- 5
Exemplu 2[edit | edit source]
- Intrare
- 1
- 7
- 10
- 18
- Ieșire
- Nu au fost respectate cerintele impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 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)
</syntaxhighlight>