[ARC161B] Exactly Three Bits
题意翻译
### 题目描述
对于一个正整数 $X$,定义 $f(X)$ 为 $X$ 在二进制表示下 $1$ 的个数,比如,因为 $6=110_{(2)}$,$11=1101_{(2)}$,$16=10000_{(2)}$,所以 $f(6)=2$,$f(11)=3$,$f(16)=1$。
现在给定你一个正整数 $N$,问是否存在一个小于等于 $N$ 的正整数 $X$,满足 $f(X)=3$。如果存在,请输出满足条件的最大的 $X$,否则输出 `-1`。
本题有多组数据。
### 输入格式
第一行一个整数 $T(1\le T\le10^5)$,表示数据组数。
接下来 $T$ 行每行一个正整数 $N(1\le N\le10^{18})$。
### 输出格式
共 $T$ 行,每行一个整数表示第 $i$ 个问题的答案。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc161/tasks/arc161_b
正整数 $ X $ に対し,「 $ X $ を $ 2 $ 進法表記したときに現れる $ 1 $ の個数」を $ f(X) $ とします. たとえば,$ 6\ =\ 110_{(2)},\ 11\ =\ 1011_{(2)},\ 16\ =\ 10000_{(2)} $ なので,$ f(6)\ =\ 2,\ f(11)\ =\ 3,\ f(16)\ =\ 1 $ です.
正整数 $ N $ が与えられます. $ N $ 以下の正整数 $ X $ であって,$ f(X)\ =\ 3 $ を満たすものが存在するかどうかを判定し,存在するならその最大値を求めてください.
$ T $ 個のテストケースが与えられるので,それぞれについて答えてください.
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる. $ N_i $ は $ i $ 番目のテストケースにおける $ N $ の値を表す.
> $ T $ $ N_1 $ $ N_2 $ $ \vdots $ $ N_T $
输出格式
$ T $ 行出力せよ. $ i $ 行目には,$ N_i $ 以下の正整数 $ X $ であって,$ f(X)\ =\ 3 $ を満たすものの最大値を出力せよ. ただし,そのような正整数 $ X $ が存在しない場合には `-1` を出力せよ.
输入输出样例
输入样例 #1
4
16
161
4
1000000000000000000
输出样例 #1
14
161
-1
936748722493063168
说明
### 制約
- $ 1\ \leq\ T\ \leq\ 10^5 $
- $ 1\ \leq\ N\ \leq\ 10^{18} $
### Sample Explanation 1
\- $ 1 $ つ目のテストケースについて,$ f(14)\ =\ 3,\ f(15)\ =\ 4,\ f(16)\ =\ 1 $ なので,$ X\ \leq\ 16 $ かつ $ f(X)\ =\ 3 $ を満たす最大の正整数 $ X $ は $ 14 $ です. - $ 2 $ つ目のテストケースについて,$ f(161)\ =\ 3 $ なので,$ X\ \leq\ 161 $ かつ $ f(X)\ =\ 3 $ を満たす最大の正整数 $ X $ は $ 161 $ です. - $ 3 $ つ目のテストケースについて,$ f(1)\ =\ 1,\ f(2)\ =\ 1,\ f(3)\ =\ 2,\ f(4)\ =\ 1 $ なので,$ X\ \leq\ 4 $ かつ $ f(X)\ =\ 3 $ を満たす正整数 $ X $ は存在しません. - $ 4 $ つ目のテストケースのように,入出力値が 32bit 整数型に収まらないこともあります.