1568 - Medie Div

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

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.