1568 - Medie Div

De la Universitas MediaWiki

Cerinţa

Se dă un număr natural numit ”numar”. Să se calculeze şi să se afişeze media aritmetică a tuturor divizorilor săi. Media va fi cu fix 2 zecimale dupa virgula.

Date de intrare

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

Date de ieşire

Programul afișează pe ecran numărul ”media”, reprezentând media aritmetica.

Restricții și precizări

  • numar ∈ Ν
  • 0 ⩽ numar ⩽ 1.000.000.000

Exemplu

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


Intrare
8
Ieșire
Datele de intrare corespund restricțiilor impuse.
3.75


Intrare
Ana
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Explicație

Divizorii lui 9 sunt: 1, 3, 9. Media aritmetica este 4.33.
Divizorii lui 8 sunt: 1, 2, 4, 8. Media aritmetica este 3.75

Rezolvare

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

def medie(numar):
    suma_divizorilor = numar
    numarul_divizorilor = 1  #inițializăm numarul_divizorilor cu 1 pentru că suma_divizorilor deja conține numărul însuși
    for i in range(1, numar // 2 + 1):
        if numar % i == 0:
            suma_divizorilor += i
            numarul_divizorilor += 1
    medie_divizori = suma_divizorilor / numarul_divizorilor
    print(medie_divizori)

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

Explicație

În acest cod funcția de validare verifică dacă numărul este un întreg pozitiv între 0 și 1_000_000_000, iar funcția care calculează media divizorilor adună toți divizorii numărului dat și îi împarte la numărul total de divizori ai acestuia, afișând apoi rezultatul.