atcoder#ARC161B. [ARC161B] Exactly Three Bits

[ARC161B] Exactly Three Bits

题目描述

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

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

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

输入格式

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

T T N1 N_1 N2 N_2 \vdots NT N_T

输出格式

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

题目大意

题目描述

对于一个正整数 XX,定义 f(X)f(X)XX 在二进制表示下 11 的个数,比如,因为 6=110(2)6=110_{(2)}11=1101(2)11=1101_{(2)}16=10000(2)16=10000_{(2)},所以 f(6)=2f(6)=2f(11)=3f(11)=3f(16)=1f(16)=1

现在给定你一个正整数 NN,问是否存在一个小于等于 NN 的正整数 XX,满足 f(X)=3f(X)=3。如果存在,请输出满足条件的最大的 XX,否则输出 -1

本题有多组数据。

输入格式

第一行一个整数 T(1T105)T(1\le T\le10^5),表示数据组数。

接下来 TT 行每行一个正整数 N(1N1018)N(1\le N\le10^{18})

输出格式

TT 行,每行一个整数表示第 ii 个问题的答案。

4
16
161
4
1000000000000000000
14
161
-1
936748722493063168

提示

制約

  • 1  T  105 1\ \leq\ T\ \leq\ 10^5
  • 1  N  1018 1\ \leq\ N\ \leq\ 10^{18}

Sample Explanation 1

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