3928 - Abcd: Difference between revisions

From Bitnami MediaWiki
Adrian (talk | contribs)
No edit summary
Adrian (talk | contribs)
No edit summary
 
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 "Datele de intrare nu corespund restricțiilor impuse".
Î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

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>

  1. 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>