目录
- 1. 题目:
- 2. 我的代码:
- 小结:
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])
这个题比较简单,使用python自带的排序函数sorted即可,给这个函数的排序规则传入定义好的求位数总和的函数即可。
小结:
关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职|| ||代码问题求解||
添加我的公众号即可: