2215 - cifre002

From Bitnami 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

<syntaxhighlight lang="python" line> 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()

</syntaxhighlight>

Explicatie

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