<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])
posted @ 2023-02-28 20:10  卞彦秋euReKa  阅读(59)  评论(0编辑  收藏  举报