Nevezzük rendes számoknak azokat a pozitív egészeket, amelyekben minden számjegy értéke nagyobb annál, mint ahányadik helyiértéken (balról jobbra számolva) megtalálható a számjegy. Például a 256 rendes szám, mivel az első helyen van egy 2-es, a második helyen van egy 5-ös és a harmadik helyen van egy 6-os. A 2538 viszont nem rendes szám, mert a harmadik helyen egy 3-as áll.

Készítsünk programot, amely megadja az N-edik rendes számot (1≤N≤100000). A program a standard bemenetről olvassa be N értékét, majd írja ki az N-edik rendes számot a képernyőre.

 

Minta

Adja meg N értékét: 100
A(z) 100. rendes szám: 289

 

 

Megoldás

n = int(input('Adja meg N értékét: '))
i = 1
talalat = 0
eredmeny = 0
while talalat < n:
     i_str = str(i)
     szamjegyek = [int(szj) for szj in i_str] # a számjegyek
     jok = [szamjegyek[i1] for i1 in range(len(szamjegyek)) if szamjegyek[i1]>i1+1] # csak a jó számjegyek
     #print(i,jok)
     if len(szamjegyek) == len(jok):
          eredmeny = i
          talalat += 1
     #print('vizsgálat alatt:',i,'\tlegutolsó ('+str(talalat)+'.) rendes szám:',eredmeny)
     i += 1
print('A(z)',str(n)+'. rendes szám:',eredmeny)

News Reporter