Liczby parzystocyfrowe

Zadanie o nazwie Liczby parzystocyfrowe pochodzi z Olimpiady Informatycznej Juniorów (OIJ) rozgrywanej w roku 2019/2020. Olimpiada jest przeznaczona dla uczniów klas szkoły podstawowej, a więcej o niej można się dowiedzieć z jej strony: oij.edu.pl. Na tej stronie publikuję przykładowe rozwiązanie, które wygeneruje nam 100 punkowy wynik.

Treść zadania

Dodatnią liczbę całkowitą nazywamy parzystocyfrową, jeśli wszystkie jej cyfry są parzyste. Na przykład: liczby 6, 42, 2020 są parzystocyfrowe, zaś 7, 34, 2019 lub 13 579 nie są. Gdyby wszystkie liczby parzystocyfrowe ustawić w kolejności rosnącej, która liczba byłaby N-ta w tym porządku?

Napisz program, który: wczyta liczbę naturalną N, wyznaczy N-tą liczbę parzystocyfrową i wypisze wynik na standardowe wyjście.

Przykładowe wejścia i wyjścia

  • Dla N = 12 wyjściem powinno być 44
  • Dla N = 7921 wyjściem powinno być 446282
  • Dla N = 1000000000000 wyjściem powinno być 224682000000000000
  • Dla N = 1000000000000000000 wyjściem powinno być 62684068000000000000000000

Pełna treść zadania znajduje się tutaj.

Kod programu

1
2
3
4
5
6
7
8
n = int(input())
t = ""
while n >= 5:
        t = str(n % 5 * 2) + t
        n = n // 5
   
t = str(n * 2) + t
print(t)

Powyższy kod nie różni się bardzo od zamiany dowolnej liczby na system dwójkowy, trójkowy, ósemkowy itd. Tu mamy zwykłą zamianę na system piątkowy (tyle jest liczb parzystych), z tym że reszty są przemnażane przez 2.