题目如下:
首先我第一次写出来的代码超时了,如下:
n = int(input())
m = int(input())
list = []
for i in range(1,n+1):
astr = str(i)
sum = 0
for j in astr:
sum+=int(j)
list.append((i,sum))
sort_list = sorted(list,key = lambda x:x[1])
print(sort_list[m-1][0])
题目意思很明确:就是排序,排序的关键字是数位之和。因此我们可以使用匿名函数lambda
n = int(input())
m = int(input())
list = list(range(1,n+1))
list.sort(key = lambda x:sum(int(i) for i in str(x)))
print(list[m-1])
'''
在这里注意,可以这样直接输出一个列表:print([int(i) for i in str(2112123)])
[2,1,1,2,1,2,3]
sum对其求和的时候可以不需要加上中括号
第二要了解匿名函数的使用,key=lambda x:num。在排序中经常用到
'''
第一个通过了90%的测试用例,其实相较于下面的代码,上面的for循环是完全不需要的,因此会造成总时间超时,导致错误。