1780 - Fractie

De la Universitas MediaWiki

Cerinţa

Se dau două numere naturale n și m, m fiind prim. Să se afle cel mai mare număr natural x, astfel încât numărul n!/mx să fie natural.

Date de intrare

Programul citește de la tastatură numerele n si m.

Date de ieşire

Programul va afișa pe ecran numarul x.

Restricții și precizări

  • 2 ≤ m ≤ n ≤ 10000
  • m este prim.

Exemplu

Intrare
5 5
Ieșire
1

Explicație

5! = 120. 60 = 5 * 2 * 2 * 2 * 3.

Rezolvare

def validare_date(n, m):
    # Verifică dacă n și m sunt numere întregi pozitive
    if isinstance(n, int) and isinstance(m, int) and n > 0 and m > 0:
        return True
    else:
        return False

if __name__ == '__main__':
    # Citește datele de intrare de la utilizator
    n, m = map(int, input().split())

    # Validează datele de intrare
    if validare_date(n, m):
        # Efectuează aceeași calculație ca în codul original
        p = 0
        for i in range(1, n+1):
            aux = i
            if aux % m == 0:
                while aux % m == 0:
                    p += 1
                    aux = aux // m
        print(p)
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")