24h購物| | PChome| 登入
2011-08-23 10:17:26| 人氣1,238| 回應0 | 上一篇 | 下一篇

a225. 明明愛排列

推薦 0 收藏 0 轉貼0 訂閱站台

a225. 明明愛排列

內容 :

可惜,沒有下一題叫做「列排愛明明」,明明系列即將在這裡告一段落,謝謝大家這幾天來的支持!

明明喜歡把數字排成一列--用他自己的方式!
他首先先看個位數,把個位數由小到大排。接著,如果個位數字一樣的話,他會將這些數字,由大至小排。
例如,如果數字有 38 106 98 26 13 46 51 的話,那麼 51 會排最前面,因為個位數字 1 是其中最小的一個。
而 106 26 46 這三個數字,個位數同樣都是 6,所以明明會直接將他們由大至小排,也就是 106 46 26。
所以,排好之後是:51 13 106 46 26 98 38,請你幫他輸出最終結果吧!

輸入說明 :

有多組測試資料,以 EOF 結束。
每組測試資料以一個 n(<=1000) 開始,表示明明拿到了幾個數字。接著有 n 個以空白隔開的整數。

輸出說明 :

請輸出排序後的結果,以空白隔開。

範例輸入 :

7
38 106 98 26 13 46 51
6
1 2 3 4 5 0
5
98 76 12 34 55
6
33 33 88 88 83 38

範例輸出 :

51 13 106 46 26 98 38
0 1 2 3 4 5
12 34 55 76 98
83 33 33 88 88 38

提示 :

出處 :

(管理:VacationClub)



垃圾題, 拚短碼

/**********************************************************************************/
/*  Problem: a225 "明明愛排列" from                                          */
/*  Language: C                                                                   */
/*  Result: AC (6ms, 314KB) on ZeroJudge                                          */
/*  Author: morris1028 at 2011-08-23 09:45:20                                     */
/**********************************************************************************/


#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a, const void *b) {
    int *aa, *bb;
    aa = (int *)a, bb = (int *)b;
    if((*aa)%10 < (*bb)%10)    return 0;
    else if((*aa)%10 > (*bb)%10) return 1;
    else {
        return *aa < *bb;
    }
}
main() {
    int n, A[1001], a;
    while(scanf("%d", &n) == 1) {
        for(a = 0; a < n; a++)
            scanf("%d", &A[a]);
        qsort(A, n, sizeof(int), cmp);
        for(a = 0; a < n; a++)
            printf("%d ", A[a]);
        puts("");
    }
    return 0;
}

台長: Morris
人氣(1,238) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: ZeroJudge |
此分類下一篇:d885. NOIP2007 1.統計數字 番外篇 (HASH重製)
此分類上一篇:a224. 明明愛明明

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文