题目描述
正整数 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 個のテストケースが与えられるので,それぞれについて答えてください.
输入格式
入力は以下の形式で標準入力から与えられる. Ni は i 番目のテストケースにおける N の値を表す.
T N1 N2 ⋮ NT
输出格式
T 行出力せよ. i 行目には,Ni 以下の正整数 X であって,f(X) = 3 を満たすものの最大値を出力せよ. ただし,そのような正整数 X が存在しない場合には -1
を出力せよ.
题目大意
题目描述
对于一个正整数 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≤T≤105),表示数据组数。
接下来 T 行每行一个正整数 N(1≤N≤1018)。
输出格式
共 T 行,每行一个整数表示第 i 个问题的答案。
4
16
161
4
1000000000000000000
14
161
-1
936748722493063168
提示
制約
- 1 ≤ T ≤ 105
- 1 ≤ N ≤ 1018
Sample Explanation 1
- 1 つ目のテストケースについて,f(14) = 3, f(15) = 4, f(16) = 1 なので,X ≤ 16 かつ f(X) = 3 を満たす最大の正整数 X は 14 です. - 2 つ目のテストケースについて,f(161) = 3 なので,X ≤ 161 かつ f(X) = 3 を満たす最大の正整数 X は 161 です. - 3 つ目のテストケースについて,$ f(1)\ =\ 1,\ f(2)\ =\ 1,\ f(3)\ =\ 2,\ f(4)\ =\ 1 $ なので,X ≤ 4 かつ f(X) = 3 を満たす正整数 X は存在しません. - 4 つ目のテストケースのように,入出力値が 32bit 整数型に収まらないこともあります.