解题思路:
将数值 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++代码)(时间超限,希望会的帮我改正一下)浏览:741 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:326 |
IP判断 (C语言描述,蓝桥杯)浏览:1095 |
A+B for Input-Output Practice (VI) (C语言代码)浏览:558 |
A+B for Input-Output Practice (C语言代码)浏览:468 |
循环入门练习5 (C语言代码)浏览:839 |
勾股数 (C语言代码)浏览:799 |
简单的a+b (C语言代码)浏览:830 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:403 |
1162答案错误,为什么浏览:644 |