求问
  • 板块灌水区
  • 楼主Max_LS
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/18 11:27
  • 上次更新2024/7/18 12:35:42
查看原帖
求问
1227116
Max_LS楼主2024/7/18 11:27

题目描述

写一个程序,从输入文件读入一对正整数,将这两个数之间(包括这两个数本身)的所有数按下述特别规则排序后输出。该特别规则是按两数倒过来的值进行比较决定其大小,如30倒过来为3,29倒过来为92,则29大于30。如果两数倒过来的值相同则原数小的先输出,如3和30倒过来都为3,但先输出3再输出30。

输入格式

单独一行包含二个用空格隔开的自然数a,ba,b,这二个自然数给出了待排序数的范围,其中1≤a≤b≤999999999,两个数之差不超过100。

输出格式

排序的结果

我只对了样例(22 39),剩下全错,教练的题洛谷没有

我的代码

#include<bits/stdc++.h>
using namespace std;
struct node{
	int a,b;
}num[100];
int push(int a){
	int b,result=0,i;
	for(i=0;;i++){
		if(a!=0){		
			b=a%10;
			a=(a-b)/10;
			result=result*10+b;
		}
		else{
			return result;
		}
	}
}
bool cmp(const node& a,const node& b){
	if(a.a<b.a) return true;
	else return false;
}
signed main(){
	int a,b;
	scanf("%d%d",&a,&b);
	for(int i=a,j=0;i<=b&&j<=b-a;i++,j++){
		num[j].a=push(i);
		num[j].b=i;
	}
	sort(num,num+(b-a),cmp);
	for(int i=0;i<=(b-a);i++){
		if(num[i].a==num[i+1].a){
			if(num[i].b<num[i+1].b){
				printf("%d\n",num[i].b);
				printf("%d\n",num[i+1].b);
				i++;
			}
			else{
				printf("%d\n",num[i+1].b);
				printf("%d\n",num[i].b);
				i++;
			}
		}
		else{
			printf("%d\n",num[i].b);
		}
	}
	return 0;
}
2024/7/18 11:27
加载中...