問題一覧 > 通常問題

No.3102 floor sqrt xor

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 48
作問者 : shobonvip / テスター : noya2
3 ProblemId : 11576 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-04-11 21:21:00

問題文

非負整数 $N$ が与えられます。非負整数 $k$ であって、 $\lfloor \sqrt{k} \rfloor \oplus k = N$ となるものがあるかどうか判定し、あれば $1$ つ見つけてください。

ただし、 $\oplus$ は bitwise xor を表すとします。また、実数 $x$ に対して $\lfloor x \rfloor$ は、 $x$ を超えない最大の整数を表すものとします。たとえば $\lfloor 3.14 \rfloor = 3, \lfloor 4 \rfloor = 4$ となります。

$T$ 個のテストケースが与えられるので、それぞれについて解いてください。

制約

  • 入力はすべて整数
  • $1 \le T \le 100$

各テストケースに対して、

  • $0 \le N \lt 2^{60}$

入力

$T$
$\text{case}_1$
$\text{case}_2$
$\vdots$
$\text{case}_T$
ここで、 $\text{case}_i$ $(1\le i \le T)$ は $i$ 番目のテストケースを表す。各テストケースは以下の形式で与えられる。
$N$

出力

$T$ 行出力せよ。 $i$ $(1\le i\le T)$ 行目には、 $i$ 番目のテストケースの $N$ について、$\lfloor \sqrt{k} \rfloor \oplus k = N$ となる非負整数 $k$ がある場合は $k$ の値を $1$ つ出力し、そのような非負整数 $k$ がない場合は -1 を出力せよ。

サンプル

サンプル1
入力
8
1
2
10
0
11
12
998244353
1152921504606846975
出力
-1
3
9
0
-1
15
998275946
1152921503533105152

$1$ 個目のケースについて、 $\lfloor \sqrt{k} \rfloor \oplus k = 1$ を満たす非負整数は存在しません。

$2$ 個目のケースについて、 $\lfloor \sqrt{3} \rfloor \oplus 3 = 1 \oplus 3 = 2$ であるので、 $3$ を出力します。

$3$ 個目のケースについて、 $\lfloor \sqrt{k} \rfloor \oplus k = 10$ を満たす非負整数は $k=8$ と $k=9$ の $2$ つが存在しますが、どちらを出力してもよいです。

$4$ 個目のケースについて、 $\lfloor \sqrt{k} \rfloor \oplus k = 0$ を満たす非負整数は $k=0$ と $k=1$ の $2$ つが存在しますが、どちらを出力してもよいです。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。