3928 - Abcd

From Bitnami MediaWiki
Revision as of 11:12, 23 May 2023 by Adrian (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>