1. 题目:
小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。
例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。
又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。
给定正整数 n, m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?
输入格式
输入第一行包含一个正整数 n
第二行包含一个正整数 m
输出格式
输出一行包含一个整数, 表示答案。
样例输入
13
5
样例输出
3
2. 我的代码:
import os import sys n = int(input()) m = int(input()) l = [i for i in range(1, n + 1)] # 定义排序规则 def f(i): l_i = [int(c) for c in str(i)] return sum(l_i) # 排序 sorted_l = sorted(l, key=lambda i: f(i)) # 输出第m个元素 print(sorted_l[m - 1])