2215 - cifre002

De la Universitas MediaWiki

Cerinţa

Se dă un număr natural n format cu cifre distincte nenule. Să se afle câte numere pare se pot obţine din n, prin rearanjarea cifrelor sale.

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Programul va afișa pe ecran numărul numerelor pare care se pot obţine prin rearanjarea cifrelor lui n.

Restricţii şi precizări

  • 1 ⩽ n ⩽ 2.000.000.000

Exemplul 1

Intrare
324
Iesire
Datele de intrare corespund restrictiilor impuse
4

Exemplu 2

Intrare
2000000001
Iesire
Datele de intrare nu corespund restrictiilor impuse

Rezolvare

from math import factorial


def compute_even_numbers(n):
    digits = [int(d) for d in str(n)]
    even_digits = [d for d in digits if d % 2 == 0]
    if not even_digits:
        return 0
    digits.sort()
    count = 0
    for ed in even_digits:
        temp = digits[:]
        temp.remove(ed)
        count += factorial(len(temp)) * (len(temp) ** (len(temp) - 1))
    return count


def main():
    n = int(input())

    if n > 2000000000:
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    even_numbers = compute_even_numbers(n)
    print("Datele de intrare corespund restrictiilor impuse")
    print(even_numbers)


if __name__ == "__main__":
    main()

Explicatie

Numerele pare ce se pot obţine prin rearanjarea cifrelor lui n sunt: 324,342,234,432