题目 2684: 蓝桥杯2022年第十三届省赛真题-数位排序

该篇文章介绍了一个编程问题,要求根据数位之和和数值大小对1到n的整数进行排序。给出了一个Python代码示例,使用lambda函数实现排序逻辑并求解特定位置的数字。
摘要由CSDN通过智能技术生成

题目描述

小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。

例如,2022 排在 409 前面,因为 2022 的数位之和是 6,小于 409 的数位之和 13。

又如,6 排在 2022 前面,因为它们的数位之和相同,而 6 小于 2022。

给定正整数 n,m,请问对 1 到 n 采用这种方法排序时,排在第 m 个的元素是多少? 

输入格式

输入第一行包含一个正整数 n。

第二行包含一个正整数 m。

输出格式

输出一行包含一个整数,表示答案。

样例输入

13
5

样例输出

3

代码

import sys

def dig_sum(n):
    s=0
    while n:
        s+=n%10
        n=n//10
    return s

n=int(input())
m=int(input())
line=list(range(1,n+1))  #1到n存入列表line
line=sorted(line,key=lambda x:(dig_sum(x),x))  #各位数相加和作为第一关键字,数值本身作为第二关键字,来进行排序
print(line[m-1])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值