Kreditna


Submit solution

Points: 100 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C++, Haskell, PyPy, Python

Marko je kao član kluba redovitih letača sakupio mnogo nagradnih milja, te se konačno odlučio počastiti putovanjem u Australiju. Međutim, kako to obično biva, nagradne milje ne pokrivaju sve troškove putovanja, pa ga je gospodin iz avio-kompanije telefonski zamolio da mu Marko e-mailom pošalje broj kreditne kartice (niz od 16 znamenki).

Marko je svjestan da je to suludo, ali gospodin s druge strane telefonske linije inzistira na tome. Marko je kao kompromis ponudio da pošalje broj kartice kriptiran sljedećim algoritmom:

  • Marko će pronaći najmanju znamenku u broju, a ako ih ima više, među njima će odabrat prvu s lijeva. Nazovimo ovu znamenku A.
  • Zatim će pronaći najveću znamenku u broju, a ako ih ima više, među njima će odabrat zadnju. Nazovimo ovu znamenku B.
  • Znamenku A će uvećati za 1, osim ako je već jednaka broju 9.
  • Znamenku B će umanjiti za 1, osim ako je već jednaka broju 0.
  • Konačno, Marko će znamenkama A i B zamijeniti pozicije.

Na primjer, ako je broj njegove kartice 7691 0027 7960 3269, tada će Marko u e-mailu poslati broj: 7691 8027 7960 3261. Napišite program koji će gospodinu iz avio-kompanije pomoći da odredi broj Markove kreditne kartice.

Ulaz

U prvom i jedinom redu nalazi se niz od 16 znamenaka '0' - '9', broj koji je Marko poslao u e-mailu. Napomena: Broj kreditne kartice može početi sa znamenkom '0' i pazite pri ispisu da ne zaboravite '0' na početku ako bude bilo.

Izlaz

Ispišite sve moguće brojeve Markove kreditne kartice, po jedan u svaki red. Ako ne postoji niti jedan valjani broj kreditne kartice, ispišite "banana".

Ulaz primjera

7691802779603261

Izlaz primjera

7691002779603269

Ulaz primjera

8381950005575690

Izlaz primjera

banana

Ulaz primjera

8446462287549826

Izlaz primjera

1446462287549896
8446462217549896
8446462287549196

Comments

There are no comments at the moment.