1到n的数按字典序排序

#coding:utf-8
'''
输入:n,m
输出从  1 到  n 的数按  字典序  排序的低  m 个数
如输入:11 4
1 10 11 2 3 4 5 6 7 8 9 中的第四个数
输出: 2
'''
import numpy as np
from numpy import *

s = raw_input()
s = s.split(' ')
n = int(s[0])
m = int(s[1])
nn = 0  # 生成了nn个数了
nlen = len(str(n))  # n 的长度
reslist = []  # 结果列表


def fun(a):
    global m,n,nn,reslist
    if nn>=m:
        print 'nn=',nn
        return
    elif len(a)>nlen:
            print 'a=',a,' so',len(a),'>',nlen
            return
    elif int(a)>n :
            print a,'>',n,':','a>n'
            return 
    else: 
        reslist.append(a)
        nn+=1
        print nn,'\t',a
    if (len(a)<nlen)&(nn<m):   
        for j in range(10): 
            temp = '' 
            temp = str(a)+str(j)
            fun(temp)


for i in range(1,10):   
    if nn<m:fun(str(i))

 
print reslist
print reslist[-1] 

  
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值