0410 - CMMDC 2: Difference between revisions
Robert Manc (talk | contribs) Pagină nouă: == Cerinţa == Se dă un număr natural '''n'''. Acest număr se “împarte” în alte două numere '''a''' și '''b''', astfel: '''a''' este format din cifrele din prima jumătate a lui '''n''', '''b''' este format din cifrele din a doua jumătate a lui '''n'''. Dacă '''n''' are număr impar de cifre, cifra din mijloc se ignoră. De exemplu, dacă '''n=9183792''', atunci '''a=918''', iar '''b=792'''. Să se determine cel mai mare divizor comun al lui '''a''' și '''b'''.... |
Robert Manc (talk | contribs) No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 12: | Line 12: | ||
: 9183792 | : 9183792 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 18 | : 18 | ||
== Exemplu2 == | == Exemplu2 == | ||
Line 18: | Line 18: | ||
: 2847956 | : 2847956 | ||
; Ieșire | ; Ieșire | ||
: Datele | : Datele de intrare corespund restricțiilor impuse. | ||
: 4 | : 4 | ||
== Rezolvare == | == Rezolvare == | ||
Line 58: | Line 58: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicație == | |||
Codul calculează cel mai mare divizor comun dintre două numere, reprezentate de jumătățile unui număr introdus de la tastatură. Mai întâi, se validează inputul pentru a se asigura că respectă restricțiile impuse, apoi se calculează jumătățile numărului și se aplică algoritmul lui Euclid pentru a găsi cel mai mare divizor comun. Rezultatul este afișat în final. |
Latest revision as of 15:58, 28 April 2023
Cerinţa[edit | edit source]
Se dă un număr natural n. Acest număr se “împarte” în alte două numere a și b, astfel: a este format din cifrele din prima jumătate a lui n, b este format din cifrele din a doua jumătate a lui n. Dacă n are număr impar de cifre, cifra din mijloc se ignoră. De exemplu, dacă n=9183792, atunci a=918, iar b=792. Să se determine cel mai mare divizor comun al lui a și b.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numărul cmmdc, reprezentând valoarea cerută.
Restricții și precizări[edit | edit source]
- n ∈ Ν
- 0 ⩽ n ⩽ 1.000.000.000
Exemplu1[edit | edit source]
- Intrare
- 9183792
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 18
Exemplu2[edit | edit source]
- Intrare
- 2847956
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 4
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def validare_date(numar):
flag = False if numar.isdigit(): if 10 <= int(numar) <= 1_000_000_000: flag = True return flag
def CMD(numar1, numar2):
while numar2: r = numar1 % numar2 numar1, numar2 = numar2, r cmmdc = numar1 return cmmdc
def cel_mai_mare_divizor(numar):
n = str(numar) if len(n) % 2 == 1: n = n[:len(n) // 2] + n[len(n) // 2 + 1:] jumatate = len(n) // 2 a = int(n[:jumatate]) b = int(n[jumatate:]) cmmdc = CMD(a, b) print(cmmdc)
if __name__ == '__main__':
numar = input() if validare_date(numar): print("\nDatele de intrare corespund restricțiilor impuse.\n") cel_mai_mare_divizor(numar) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicație[edit | edit source]
Codul calculează cel mai mare divizor comun dintre două numere, reprezentate de jumătățile unui număr introdus de la tastatură. Mai întâi, se validează inputul pentru a se asigura că respectă restricțiile impuse, apoi se calculează jumătățile numărului și se aplică algoritmul lui Euclid pentru a găsi cel mai mare divizor comun. Rezultatul este afișat în final.