题目描述
读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出,该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30。
输入
1行,包含两个用空格隔开的自然数,这两个自然数给出了待排序数的范围,其中l≤第一个数≤第二个数≤999999999,两个数之差不超过100。
输出
输出排序后的数据,每行输出一个数。
样例输入 Copy
22 39
样例输出 Copy
30 31 22 32 23 33 24 34 25 35 26 36 27 37 28 38 29 39
思路:
1.因为最终输出的是原始数据,而比较的是倒序后大小---->>>故用结构体记录变化前后的值,便于后续输出;
2.同时运用结构体排序
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct shu{
ll t1; //原始数据
ll t2;//倒序后的值
}tp[110];
ll cmp(shu x,shu y)
{
return x.t2<y.t2;
}
int main()
{
ll a,b,j=0,n;
cin>>a>>b;
n=b-a+1;
for(int i=a;i<=b;i++)
{
ll sum=0,k=i;
tp[j].t1=i;
while(k) //倒序模板
{
ll t=k%10;
sum=sum*10+t;
k=k/10;
}
tp[j].t2=sum;
j++;
}
sort(tp,tp+n,cmp);
for(int i=0;i<n;i++)
cout<<tp[i].t1<<endl;
return 0;
}