程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 奇怪的排序(hpu1162)

奇怪的排序(hpu1162)

編輯:C++入門知識

奇怪的排序(hpu1162)


奇怪的排序

Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 69 Solved: 37
[Submit][Status][Web Board]

Description

最近,Dr. Kong 新設計一個機器人Bill。這台機器人很聰明,會做許多事情。惟獨對自然數的理解與人類不一樣,它是從右往左讀數。比如,它看到123時,會理解成321。讓它比較23與15哪一個大,它說15大。原因是它的大腦會以為是32與51在進行比較。再比如讓它比較29與30,它說29大。 給定Bill兩個自然數A和B,讓它將 [A,B] 區間中的所有數按從小到大排序出來。你會認為它如何排序?

Input

第一行: N 表示有多少組測試數據。 接下來有N行, 每一行有兩個正整數A B 表示待排序元素的區間范圍。 2<=N<=5 1<=A<=B<=200000 B-A<=50。

Output

對於每一行測試數據,輸出一行,為所有排好序的元素,元素之間有一個空格。

Sample Input

28 1522 39

Sample Output

10 8 9 11 12 13 14 1530 31 22 32 23 33 24 34 25 35 26 36 27 37 28 38 29 39

HINT

Source

河南第五屆ACM省賽T1

#include
int a[200010];
int b[200010];
int tmp(int a)
{
    int ans=0;
    while(a)
    {
        ans+=ans*10+a%10;
        a/=10;
    }
    return ans;
}
int main()
{
	int test,n,m,i,j,t;
	scanf("%d",&test);
	while(test--)
    {
	    scanf("%d%d",&n,&m);
		for(i=n;i<=m;i++)
        {
		    a[i]=tmp(i);
			b[i]=i;
		}
        for(i=n;i<=m;i++)
		{
            for(j=i+1;j<=m;j++)
			{
			    if(a[i]>a[j])
				{
				   t=a[i]; a[i]=a[j]; a[j]=t;    
				   t=b[i]; b[i]=b[j]; b[j]=t;
				}
			}
		}
        printf("%d",b[n]);
        for(i=n+1;i<=m;i++)
		{
		    printf(" %d",b[i]);
        }
        printf("\n");
	}
    return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved