0305 - CMMDC N: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dau '''n''' numere naturale nenule. Calculaţi cel mai mare divizor comun al lor. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spaţii. == Date de ieşire == Programul afișează pe ecran numărul '''cmmdcn''', reprezentând cel mai mare divizor comun al celor '''n''' numere citite. == Restricții și precizări == * n ∈ Ν * 1 ⩽ n ⩽ 1.000 * cele '''n''' numere citi...
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 14: Line 14:
: 18 54 24 42
: 18 54 24 42
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 6
: 6
== Exemplu2 ==
== Exemplu2 ==
Line 21: Line 21:
: 12 156 60 24 96
: 12 156 60 24 96
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 12
: 12
== Rezolvare ==
== Rezolvare ==
Line 56: Line 56:


</syntaxhighlight>
</syntaxhighlight>
== Explicație ==
Programul calculează cel mai mare divizor comun (CMMDC) al unui număr de numere. Funcția '''validare_date''' verifică dacă numărul de numere și fiecare număr în parte respectă anumite restricții, în timp ce funcția '''cmmdc''' calculează CMMDC folosind algoritmul Euclid. Funcția '''cmmdc_multiplu''' este folosită pentru a calcula CMMDC pentru mai multe numere simultan. Dacă toate datele de intrare sunt valide, codul afișează CMMDC-ul.

Latest revision as of 16:06, 28 April 2023

Cerinţa[edit]

Se dau n numere naturale nenule. Calculaţi cel mai mare divizor comun al lor.

Date de intrare[edit]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.

Date de ieşire[edit]

Programul afișează pe ecran numărul cmmdcn, reprezentând cel mai mare divizor comun al celor n numere citite.

Restricții și precizări[edit]

  • n ∈ Ν
  • 1 ⩽ n ⩽ 1.000
  • cele n numere citite vor avea cel mult 9 cifre

Exemplu1[edit]

Intrare
4
18 54 24 42
Ieșire
Datele de intrare corespund restricțiilor impuse.
6

Exemplu2[edit]

Intrare
5
12 156 60 24 96
Ieșire
Datele de intrare corespund restricțiilor impuse.
12

Rezolvare[edit]

<syntaxhighlight lang="python" line> def validare_date(numar, numere):

   if 1 <= numar <= 1000:
       return all(isinstance(x, int) and 0 <= x < 1000000000 for x in numere)
   return False


def cmmdc(numar1, numar2):

   while numar2 != 0:
       rest = numar1 % numar2
       numar1 = numar2
       numar2 = rest
   return numar1


def cmmdc_multiplu(numere):

   cmmdcn = numere[0]
   for i in range(1, len(numere)):
       cmmdcn = cmmdc(cmmdcn, numere[i])
   return cmmdcn


if __name__ == '__main__':

   n = int(input())
   numere = list(map(int, input().split()))
   if validare_date(n, numere):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       print(cmmdc_multiplu(numere))
   else:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>

Explicație[edit]

Programul calculează cel mai mare divizor comun (CMMDC) al unui număr de numere. Funcția validare_date verifică dacă numărul de numere și fiecare număr în parte respectă anumite restricții, în timp ce funcția cmmdc calculează CMMDC folosind algoritmul Euclid. Funcția cmmdc_multiplu este folosită pentru a calcula CMMDC pentru mai multe numere simultan. Dacă toate datele de intrare sunt valide, codul afișează CMMDC-ul.