1
+ import java .io .*;
2
+ import java .util .*;
3
+
4
+ public class Solution {
5
+
6
+ static int tc ;
7
+ static int n ;
8
+ static int k ;
9
+ static char snum [];
10
+ static int answer = 0 ;
11
+ static Integer nums [];
12
+
13
+ public static void main (String [] args ) throws IOException {
14
+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
15
+ StringBuilder sb = new StringBuilder ();
16
+
17
+ tc = Integer .parseInt (br .readLine ());
18
+
19
+ for (int t = 1 ; t <= tc ; t ++) {
20
+ sb .append ("#" ).append (t ).append (" " );
21
+
22
+ // 입력 받기
23
+ StringTokenizer st = new StringTokenizer (br .readLine ());
24
+ n = Integer .parseInt (st .nextToken ());
25
+ k = Integer .parseInt (st .nextToken ());
26
+ snum = new char [n ];
27
+ snum = br .readLine ().toCharArray ();
28
+ nums = new Integer [n ];
29
+
30
+ // 숫자 회전하기
31
+ for (int i = 0 ; i < n / 4 ; i ++) {
32
+ // System.out.println(Arrays.toString(snum));
33
+ // 숫자 구하기
34
+ makeNum (i , snum );
35
+ char [] tmp = new char [n ];
36
+ for (int j = 0 ; j < n -1 ; j ++) {
37
+ tmp [j ] = snum [j + 1 ];
38
+ }
39
+ tmp [n -1 ] = snum [0 ];
40
+ snum = tmp ;
41
+ }
42
+ Arrays .sort (nums , Collections .reverseOrder ());
43
+ // System.out.println(Arrays.toString(nums));
44
+
45
+ int pre = -1 ;
46
+ int order = 0 ;
47
+ for (int i = 0 ; i < n ; i ++) {
48
+ if (nums [i ] == pre ) {
49
+ pre = nums [i ];
50
+ continue ;
51
+ }
52
+ order ++;
53
+ if (order == k ) {
54
+ answer = nums [i ];
55
+ break ;
56
+ }
57
+ pre = nums [i ];
58
+ }
59
+
60
+ sb .append (answer ).append ('\n' );
61
+ }
62
+
63
+ System .out .println (sb );
64
+
65
+ }
66
+
67
+ static void makeNum (int order , char [] snum ) {
68
+ // 숫자 변환
69
+ for (int i = 0 ; i < 4 ; i ++) {
70
+ StringBuilder tmp = new StringBuilder ();
71
+ int start = i * n / 4 ;
72
+ int end = i * n / 4 + n / 4 ;
73
+ for (int c = start ; c < end ; c ++) {
74
+ tmp .append (snum [c ]);
75
+ }
76
+
77
+ // 십진수로 변환
78
+ int num = 0 ;
79
+ for (int j = 0 ; j < n / 4 ; j ++) {
80
+ char cur = tmp .charAt (n / 4 - 1 - j );
81
+ if ('0' <= cur && cur <= '9' )
82
+ num += ((cur - '0' ) * Math .pow (16 , j ));
83
+ else
84
+ num += ((10 + (cur - 'A' )) * Math .pow (16 , j ));
85
+ // System.out.println(num);
86
+ }
87
+ nums [order * 4 + i ] = num ;
88
+ }
89
+ }
90
+ }
0 commit comments