0305 - CMMDC N: Difference between revisions
Robert Manc (talk | contribs) 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... |
Robert Manc (talk | contribs) 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 | : 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 | : 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
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 citite vor avea cel mult 9 cifre
Exemplu1
- Intrare
- 4
- 18 54 24 42
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 6
Exemplu2
- Intrare
- 5
- 12 156 60 24 96
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 12
Rezolvare
<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
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.