[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 整数型に収まらないこともあります.