解题思路:
将数值 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语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:665 |
拆分位数 (C语言代码)浏览:1326 |
简单的a+b (C语言代码)浏览:681 |
三角形 (C++代码)记忆化搜索浏览:1220 |
用筛法求之N内的素数。 (C语言代码)浏览:646 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:636 |
DNA (C语言描述,蓝桥杯)浏览:1553 |
文科生的悲哀 (C语言代码)浏览:1398 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:466 |
简单的a+b (C语言代码)浏览:478 |