Sort
Submit solution
Points:
10 (partial)
Time limit:
1.0s
Memory limit:
64M
Authors:
Problem type
Allowed languages
Java 19, Java 8
題目描述
給定 N 和 M,接下來會給予 N 個數字,我們需要根據一個特定的排序規則來排序這些數字,排序規則如下:
- 數字按照它們除以 M 的餘數升序排列。
- 如果兩個數的餘數相同,奇數要排在偶數前面。
- 如果兩個數的餘數相同且都是奇數,則數值較大的排在前面。
- 如果兩個數的餘數相同且都是偶數,則數值較小的排在前面。
輸入格式
- 每組測資一開始包含兩個整數 N, M。
- 接下來的 N 行裡每一行只包含一個整數。
- 這些整數保證都可以被存在 32-bit 有號整數裡。
- 輸入以 N = 0, M = 0 代表結束。
輸出格式
對於每一組輸入請輸出 N + 1 行整數:
- 第一行為兩個整數 N, M。
- 接下來的 N 行都包含一個整數,為上述的數字按上述規則排列後的結果。
- 對於輸入測資尾端的兩個 0, 0 請也輸出兩個空白分隔的 0, 0。
範例
範例輸入
15 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0 0
範例輸出
15 3
15
9
3
6
12
13
7
1
4
10
11
5
2
8
14
0 0
Comments
code : -7 % 3 = -1 math : -7 %3 = 2
math sol :((-7 % 3 ) + 3 ) % 3 =2
((number % 3 ) + 3 ) % 3
最終排序結果:15, 9, 3, 6, 12, 13, 7, 1, 4, 10, 11, 5, 2, 8, 14
說明
對於範例輸入(N=15, M=3):
排序規則依次應用:
按餘數分組(餘數升序):
組內排序:
最終排序結果:15, 9, 3, 12, 6, 13, 7, 1, 4, 10, 11, 5, 2, 8, 14