<python>数位排序
题目描述
小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。
例如,2022 排在 409 前面,因为 2022 的数位之和是 6,小于 409 的数位之和 13。
又如,6 排在 2022 前面,因为它们的数位之和相同,而 6 小于 2022。
给定正整数 n,m,请问对 1 到 n 采用这种方法排序时,排在第 m 个的元素是多少?
输入格式
输入第一行包含一个正整数 n。
第二行包含一个正整数 m。
输出格式
输出一行包含一个整数,表示答案。
样例输入
13
5
样例输出
3
n=int(input())
m=int(input())
d=dict()
for i in range(1,n+1):
d[i]=sum(list(map(int,str(i)))) #建立字典里的键值对
l=list(d.items()) #将字典的键值对转换成列表方便排序
l.sort(key=lambda x:x[1]) #按第二个参数排序
print(l[m-1][0])