正の整数を 2進数で表現したときに、1や0が3つ以上続く部分を含む数を「三連数」と呼ぶ。
例えば下表のとおり:
数(2進数表示) | 三連数? |
---|---|
1 | 非三連数 |
1001001100 | 非三連数 |
1000 | 三連数 |
111 | 三連数 |
110001110101 | 三連数 |
で。
入力より大きな非三連数のうち、もっとも小さいものを出力するプログラムを書け。
入力は
1441
こんな感じ。
ふつうに 10進数。
出力は、2進数にすると非三連数になる数を、10進数で。
先ほどの入力の場合、
1444
と出力すればよい。
1444
は、2進数では
10110100100
となる。
# | 入力 | 期待 | 期待の2進数表示 |
---|---|---|---|
0 |
1441
|
1444
|
10110100100 |
1 |
1
|
2
|
10 |
2 |
2
|
3
|
11 |
3 |
3
|
4
|
100 |
4 |
7
|
9
|
1001 |
5 |
43690
|
43691
|
1010101010101011 |
6 |
349525
|
349526
|
1010101010101010110 |
7 |
209715
|
209716
|
110011001100110100 |
8 |
209919
|
210066
|
110011010010010010 |
9 |
209664
|
209700
|
110011001100100100 |
10 |
65536
|
74898
|
10010010010010010 |
11 |
1048575
|
1198372
|
100100100100100100100 |
12 |
14
|
18
|
10010 |
13 |
13
|
18
|
10010 |
14 |
27
|
36
|
100100 |
15 |
44
|
45
|
101101 |
16 |
136
|
146
|
10010010 |
17 |
383
|
402
|
110010010 |
18 |
649
|
658
|
1010010010 |
19 |
1227
|
1228
|
10011001100 |
20 |
2693
|
2706
|
101010010010 |
21 |
4943
|
4946
|
1001101010010 |
22 |
9152
|
9362
|
10010010010010 |
23 |
8336
|
9362
|
10010010010010 |
24 |
36993
|
37449
|
1001001001001001 |
25 |
81868
|
84260
|
10100100100100100 |
26 |
73287
|
74898
|
10010010010010010 |
27 |
305901
|
305956
|
1001010101100100100 |
28 |
555516
|
599186
|
10010010010010010010 |
29 |
691590
|
692809
|
10101001001001001001 |
30 |
3112217
|
3295524
|
1100100100100100100100 |
31 |
5235890
|
5392676
|
10100100100100100100100 |
32 |
6804756
|
6890642
|
11010010010010010010010 |
33 |
13653246
|
13781284
|
110100100100100100100100 |
34 |
20099429
|
20099657
|
1001100101011001001001001 |
35 |
107304545
|
107304548
|
110011001010101011001100100 |
36 |
227978622
|
227978642
|
1101100101101010110110010010 |
37 |
380810157
|
380810386
|
10110101100101011010010010010 |
38 |
268435455
|
306783378
|
10010010010010010010010010010 |
39 |
536870912
|
613566756
|
100100100100100100100100100100 |
40 |
1072693248
|
1227133513
|
1001001001001001001001001001001 |