题目描述
读入正整数x和y,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出。
该特别规则是:按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30
输入
一行两个整数x和y,用一个空格隔开,1<=x<=y<=1000000000,y-x<=100
输出
包括y-x+1行,每行一个正整数,按两数倒过来的值进行比较决定其大小,然后由小到大输出
#include<iostream>
using namespace std;
int main(){
long long x,y,i,j,t;
long long a[105],b[105];
cin>>x>>y;
for (i=0;i<=y-x;i++){
long long s=0;
t=x+i;
a[i]=t;
while (t>0){
s=s*10+t%10;
t/=10;
}
b[i]=s;
}
for (i=0;i<y-x;i++) {
for (j=i+1;j<=y-x;j++){
if (b[i]>b[j]){
t=b[i];
b[i]=b[j];
b[j]=t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
for (i=0;i<=y-x;i++) cout<<a[i]<<"\n";
}
就是要两个数组一起换,仅此而已。
之前我想太复杂了,又是想用sort,又是想着要留住前导0换成string,
复杂版错误代码,70分
#include<iostream>
#include <algorithm>
#include<string>
using namespace std;
string r(long long n){
string str=to_string(n);
reverse(str.begin(),str.end());
return str;
}
int main(){
long long x,y,i;
long long s;
string t;
string a[105];
cin>>x>>y;
for (i=0;i<=y-x;i++){
s=x+i;
a[i]=r(s);
}
sort(a,a+y-x+1);
for (i=0;i<=y-x;i++) {
reverse(a[i].begin(),a[i].end());
cout<<a[i]<<"\n";
}
}