0408 - Divizorii Oglinditului

De la Universitas MediaWiki

Cerinţa

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

Date de intrare

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

Date de ieşire

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

Restricții și precizări

  • numar ∈ Ν
  • 0 ⩽ numar ⩽ 1.000.000.000

Exemplu

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

Explicație

Oglinditul lui 63 este 36, care are 9 divizori.

Rezolvare

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.")

Explicație

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.