非三連数 2017.8.5

問題の概要

正の整数を 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

C/C++/Java 用のテストデータ