奇怪的排序 http://acm.nyist.net/JudgeOnline/problem.php?pid=540

 

奇怪的排序

时间限制:1000 ms  |  内存限制:65535 KB
难度:1
描述

最近,Dr. Kong 新设计一个机器人Bill.这台机器人很聪明,会做许多事情。惟独对自然数的理解与人类不一样,它是从右往左读数.比如,它看到123时,会理解成321.让它比较23与15哪一个大,它说15大。原因是它的大脑会以为是32与51在进行比较.再比如让它比较29与30,它说29大.

给定Bill两个自然数A和B,让它将 [A,B] 区间中的所有数按从小到大排序出来。你会认为它如何排序?

输入
第一行: N表示有多少组测试数据. (2<=N<=5 )
接下来有N行,每一行有两个正整数A B表示待排序元素的区间范围. (1<=A<=B<=200000 B-A<=50)
输出
对于每一行测试数据,输出一行,为所有排好序的元素,元素之间有一个空格.
样例输入
2
8 15
22 39
样例输出
10 8 9 11 12 13 14 15
30 31 22 32 23 33 24 34 25 35 26 36 27 37 28 38 29 39
来源
第五届河南省程序设计大赛
 
#include<stdio.h>
#include<stdlib.h>
typedef struct No
{
	int mm;
	int m;
}No;
int cmp(const void *r,const void *t)
{
	No *e = (No *)r;
       No *f = (No *)t;
	return e->m - f->m;
}
int main()
{
	int n;
	scanf("%d",&n);
	while(n--)
	{
		No a[55];
		int b,c,i,j=0,k,p;
		scanf("%d %d",&b,&c);
		for(i=b;i<=c;i++)
		{
			a[j].mm=i;
			k=i;
			p=0;
			while(k)
			{
				p=p*10+k%10;
				k=k/10;
			}
			a[j].m=p;
			j++;
			//printf("%d ",a[j-1]);
		}
		qsort(a,c-b+1,sizeof(a[0]),cmp);
		j=0;
		for(i=b;i<=c;i++)
		{	
			if(i!=c)
				printf("%d ",a[j].mm);
			if(i==c)
				printf("%d\n",a[j].mm);
			j++;
		}
	}
	return 0;
}

这是用今天刚学的知识做的题。今天对我来说真的是好困难啊!我是第一次接触到qsort,但通过这道题我已经彻底喜欢上它了。有了qsort就不怕此类型的题了。再有就是结构体和typedef函数,通过他们可以轻松解决此题。输出时注意最后一行可不敢带空格,否则就算南阳过了其他的也未必能ac。

posted @ 2013-08-05 15:21  王莜轩  阅读(257)  评论(0编辑  收藏  举报