4653. 数位排序
小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。
当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。
例如,2022
排在 409
前面,因为 2022
的数位之和是 6
,小于 409
的数位之和 13
又如,6
排在 2022
前面,因为它们的数位之和相同,而 6
小于 2022
给定正整数 n,m
,请问对 1
到 n
采用这种方法排序时,排在第 m
个的元素是多少?
输入格式
输入第一行包含一个正整数 n
第二行包含一个正整数 m
输出格式
输出一行包含一个整数,表示答案。
数据范围
对于 30%
的评测用例,1≤m≤n≤300
对于 50%
的评测用例,1≤m≤n≤1000
对于所有评测用例,1≤m≤n≤106
输入样例:
13
5
输出样例:
3
样例解释
1
到 13
的排序为:1,10,2,11,3,12,4,13,5,6,7,8,9
第 5
个数为 3
结构体排序
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
const int N=1000010;
struct style{
int num;
ll sum_num;
};
struct style nums[N];
bool cmp(struct style n1,struct style n2){
if(n1.sum_num!=n2.sum_num) return n1.sum_num < n2.sum_num;
else return n1.num < n2.num;
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++){
nums[i].num=i+1;
int temp=i+1;
ll sum=0;
while(temp) sum+=temp%10,temp/=10;
nums[i].sum_num=sum;
}
sort(nums,nums+n,cmp);
cout<<nums[m-1].num;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具