1 题目描述
小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。
例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。
又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。
给定正整数n,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?
输入格式
输入第一行包含一个正整数 n 。
第二行包含一个正整数 m 。
输出格式
输出一行包含一个整数, 表示答案。
样例输入
13
5
样例输出
3
样例说明
1 到 13 的排序为: 1,10,2,11,3,12,4,13,5,6,7,8,91,10,2,11,3,12,4,13,5,6,7,8,9 。第 5 个数为 3 。
2 问题分析
3 代码求解
n=input()
t=len(n)
k=int(n[0])+(t-1)*9
l=int(input())
a=[[]for i in range(k+1)]
sum=0
for i in range(1,int(n)+1):
lst=str(i)
for j in range(len(lst)):
sum=sum+int(lst[j])
a[sum].append(i)
sum=0
c=0
for i in range(1,k+1):
c=c+len(a[i])
print(a[i])
if c>=l:
c=c-len(a[i])
b=l-c-1
print(a[i][b])
break