atcoder#ARC161B. [ARC161B] Exactly Three Bits

[ARC161B] Exactly Three Bits

配点 : 400400

問題文

正整数 XX に対し,「 XX22 進法表記したときに現れる 11 の個数」を f(X)f(X) とします. たとえば,$6 = 110_{(2)}, \ 11 = 1011_{(2)}, \ 16 = 10000_{(2)}$ なので,f(6)=2, f(11)=3, f(16)=1f(6) = 2, \ f(11) = 3, \ f(16) = 1 です.

正整数 NN が与えられます. NN 以下の正整数 XX であって,f(X)=3f(X) = 3 を満たすものが存在するかどうかを判定し,存在するならその最大値を求めてください.

TT 個のテストケースが与えられるので,それぞれについて答えてください.

制約

  • 1T1051 \leq T \leq 10^5
  • 1N10181 \leq N \leq 10^{18}

入力

入力は以下の形式で標準入力から与えられる. NiN_iii 番目のテストケースにおける NN の値を表す.

TT

N1N_1

N2N_2

\vdots

NTN_T

出力

TT 行出力せよ. ii 行目には,NiN_i 以下の正整数 XX であって,f(X)=3f(X) = 3 を満たすものの最大値を出力せよ. ただし,そのような正整数 XX が存在しない場合には -1 を出力せよ.

4
16
161
4
1000000000000000000
14
161
-1
936748722493063168
  • 11 つ目のテストケースについて,f(14)=3, f(15)=4, f(16)=1f(14) = 3, \ f(15) = 4, \ f(16) = 1 なので,X16X \leq 16 かつ f(X)=3f(X) = 3 を満たす最大の正整数 XX1414 です.
  • 22 つ目のテストケースについて,f(161)=3f(161) = 3 なので,X161X \leq 161 かつ f(X)=3f(X) = 3 を満たす最大の正整数 XX161161 です.
  • 33 つ目のテストケースについて,f(1)=1, f(2)=1, f(3)=2, f(4)=1f(1) = 1, \ f(2) = 1, \ f(3) = 2, \ f(4) = 1 なので,X4X \leq 4 かつ f(X)=3f(X) = 3 を満たす正整数 XX は存在しません.
  • 44 つ目のテストケースのように,入出力値が 32bit 整数型に収まらないこともあります.