0408 - Divizorii Oglinditului

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se dă un număr natural numit ”numar”. Să se determine numărul de divizori ai oglinditului lui ”numar”.

Date de intrare[edit | edit source]

Programul citește de la tastatură un număr natural ”numar”.

Date de ieşire[edit | edit source]

Programul afișează pe ecran numar_divizori , reprezentând rezultatul cerut.

Restricții și precizări[edit | edit source]

  • numar ∈ Ν
  • 0 ⩽ numar ⩽ 1.000.000.000

Exemplu[edit | edit source]

Intrare
63
Ieșire
Datele de intrare corespund restricțiilor impuse.
9

Explicație[edit | edit source]

Oglinditul lui 63 este 36, care are 9 divizori.

Rezolvare[edit | edit source]

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

   flag = False
   if numar.isdigit():
       if 0 <= int(numar) <= 1_000_000_000:
           flag = True
   return flag


def numar_divizori_oglindit(n):

   oglindit = int(str(n)[::-1])
   numar_divizori = 0
   for i in range(1, oglindit+1):
       if oglindit % i == 0:
           numar_divizori += 1
   print(numar_divizori)


if __name__ == '__main__':

   numar = input()
   if validare_date(numar):
       print("\nDatele de intrare corespund restricțiilor impuse.\n")
       numar_divizori_oglindit(int(numar))
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>

Explicație[edit | edit source]

Funcția validare_date(numar) primește un singur parametru numar și verifică dacă acesta este un număr întreg pozitiv și se află între 0 și 1_000_000_000. Dacă aceste condiții sunt îndeplinite, funcția returnează True, altfel returnează False.

Funcția numar_divizori_oglindit(n) primește un singur parametru n și calculează numărul de divizori ai numărului oglindit al lui n. Mai întâi, se calculează numărul oglindit al lui n și se salvează în variabila oglindit. Apoi, se calculează numărul de divizori ai oglindit prin iterarea prin numerele de la 1 la oglindit și verificarea dacă acestea sunt divizori ai lui oglindit. Numărul de divizori este stocat în variabila numar_divizori. Rezultatul este afișat prin apelul funcției print().

În funcția main(), utilizatorul introduce un număr, care este verificat folosind funcția validare_date(). Dacă numărul respectă restricțiile, se afișează un mesaj corespunzător și se calculează și se afișează numărul de divizori ai numărului oglindit al numărului dat, prin apelul funcției numar_divizori_oglindit(). Dacă numărul nu respectă restricțiile, se afișează un mesaj de eroare.