数位排序
题意
输入一个整数即排在第 m 个的元素是多少?
思路
- 先定义一个结构体,在结构体中定义 数位和and数值
- 在主函数中运用while函数进行输入
- 输出结果
坑点
注意在结构体中定义的数
实现步骤
- 定义一个结构体,用布尔函数来进行数值和数位和的判断
- 主函数中运用while循环来进行运算
- 注意while循环中t条件
- 输出结果即可
代码
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N=1e6+10;
struct fn{
int shuzhi;//数值
int len;//数位和
}a[N];
bool cmp(fn x,fn y)
{
if(x.len!=y.len)
{
return x.len<y.len;
}
else{
return x.shuzhi<y.shuzhi;
}
}
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
a[i].shuzhi=i;
int t=a[i].shuzhi;
int sum=0;
while(t)
{
sum+=t%10;
t/=10;
}
a[i].len=sum;
}
sort(a+1,a+n+1,cmp);
cout<<a[m].shuzhi;
return 0;
}
总结
结构体运用