解题思路:
将数值 i 和其数位和 ans 分别存放在两个数组之中,再利用 sort 快速排序对 a 数组进行排序
注意事项:
sort函数的cmp比较函数需要自己编写,注意sort排序的起止点的指针与cmp函数的返回值
参考代码:
//数位排序
#include <bits/stdc++.h>
using namespace std;
//可以这样定义很舒服
const int maxx = 1e6+5;
int a[maxx]; //存放数值i
int b[maxx]; //存放i的数位和
bool cmp(int x,int y){
//想用哪种排序方式,则让这种返回true,形参x和y是下标吗?
//数位升序
if(b[x]<b[y])
return true;
else if(b[x]==b[y] && x<y){
return true;
}
else{
return false;
}
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;++i){
//求数位和
int temp=i;
while(temp){
b[i]+=(temp%10);
temp/=10;
}
//给数组a赋值
a[i]=i;
}
//利用快速排序数组进行排序-自定义排序规则
//begin为指向待sort()的数组的第一个元素的指针,
//end为指向待sort()的数组的最后一个元素的下一个位置的指针
sort(a+1,a+n+1,cmp); //cmp函数比较特殊,返回值是bool
cout<<a[m]<<endl;
return 0;
}0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复