2215 - cifre002

From Bitnami MediaWiki

Cerinţa[edit | edit source]

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[edit | edit source]

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

Date de ieșire[edit | edit source]

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[edit | edit source]

  • 1 ⩽ n ⩽ 2.000.000.000

Exemplul 1[edit | edit source]

Intrare
324
Iesire
Datele de intrare corespund restrictiilor impuse
4

Exemplu 2[edit | edit source]

Intrare
2000000001
Iesire
Datele de intrare nu corespund restrictiilor impuse

Rezolvare[edit | edit source]

<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[edit | edit source]

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