3928 - Abcd: Difference between revisions

From Bitnami MediaWiki
Adrian (talk | contribs)
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ț...
 
Adrian (talk | contribs)
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 "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 &les; '''num1''' &lt; '''num2''' &lt; '''num3''' &lt; '''num4''' &les; 2000000000
* 2 &les; '''num1''' &lt; '''num2''' &lt; '''num3''' &lt; '''num4''' &les; 2000000000
Line 32: Line 32:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# 3928 - abcd
# 3928 - abcd
def abcd():
def validare(num1, num2, num3, num4):
    num1 = int(input())
     # Daca datele sunt invalide v-om face raise la eroarea ValueError
    num2 = int(input())
    num3 = int(input())
     num4 = int(input())


     conditii = (
     conditii = (
Line 44: Line 41:
     )
     )


     if all(conditii):
     if not all(conditii):
         print("Datele de intrare corespund restricțiilor impuse")
         raise ValueError


        numere_div_3 = 0


        numere_div_3 += num2 // 3 - (num1 - 1) // 3
def abcd(num1, num2, num3, num4):
        numere_div_3 += num4 // 3 - (num3 - 1) // 3
    # 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


        print(numere_div_3)
    numere_div_3 += num2 // 3 - (num1 - 1) // 3
    numere_div_3 += num4 // 3 - (num3 - 1) // 3


     else:
     print(numere_div_3)
        print("Nu au fost respectate cerintele impuse")




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>

  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>