AcWing 4653. 数位排序(多条件排序)
原题链接
简单
作者:
DDDDB
,
2023-01-03 18:26:12
,
所有人可见
,
阅读 275
就是个多条件排序的板子题,按照题意手写重排函数cmp即可
#include <bits/stdc++.h>
using namespace std;
int n,m;
struct node{
int ans,num;
}s[1000010];
int get_num(int x) //求一个数的数位之和的函数
{
int res=0;
while(x)
{
res+=x%10;
x/=10;
}
return res;
}
bool cmp(node a,node b) //手写重排函数,先按数位之和排,再按数字原大小排
{
if(a.ans!=b.ans)
return a.ans<b.ans;
else
return a.num<b.num;
}
int main ()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
s[i].ans=get_num(i);
s[i].num=i;
}
sort(s+1,s+1+n,cmp);
cout<<s[m].num;
return 0;
}