解题思路:
将数值 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、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复