jpseo99   2년 전

1. 조건을 만족하는 수는 많아야 2개의 digit이 활용됩니다. 

그 이유는 1과 9사이의 임의의 digit a를 사용하여 수를 만든다고 했을 때

a, aa, aaa, aaaa, ... 와 같이 무한히 만들 수 있습니다. 

한편, 비둘기집의 원리에 의해 N으로 나눈 나머지가 같은 두 수가 반드시 존재합니다.

따라서 그 두 수의 차이인 aaaa..aaa00000...0 이 조건을 만족하는 수 중 하나가 되고 정확히 2개의 수가 활용됩니다. 

물론, aaaa..a가 N으로 나눈 나머지가 0이 되도록 하는 숫자 반복이 존재한다면 단 하나의 수만을 활용해서 정답을 도출해낼 수 있겠습니다.


2. 두 숫자만을 활용해서 N으로 나누어 떨어지는 가장 작은 수 만들기

큐에 두 수 a, b를 순차적으로 넣고 visited를 갱신해가며 탐색하는 방법론을 채택하면 될 것 같습니다.

가장 작은 수가 나오면 빠르게 break으로 빠져나가고 여러 corner case는 각자 고심해보면 좋은 결과를 얻을 수 있을 것 입니다.

3. test case 

in

7
15
16
101
8910
9890
9910
17820
17980
18890
19780
19820
20410
20540
22090
22370
22670
24130
24230
24260
24610
25010
25940
26210
26290
26730
26780
27770
27820
28540
28970
29530
29670
29730
30430
30790
31810
32290
32530
32570
33980
34130
35640
35960
36010
36020
0

out

7
555
16
1111
9999999999999999990
111110111111010010
1100010
22222222222222220220
222022220020020
1100001101011110
222220222222020020
2200020
10011100011000010
222020220200220
1110001110010010
1100000010
1110111110111110
1100010110101110
11101000111110
2220002202220
11111000100010
11100001000110
220000000222220
11000101110
111111111111110
11111111111111110110
22202200020
1111101110110
220202222200220
220222222022020
110111001110
1101101100111110
111111011101010010
1100010
11100000001010
11001101011110
1100000011010
100011000110111110
11010101100010
100110111111110110110
220200220220
10000000110010110
44444444444444440440
444044440040040
1101100111000110
220220200220220

댓글을 작성하려면 로그인해야 합니다.