結果
| 問題 |
No.3102 floor sqrt xor
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-04-11 21:50:51 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 41 ms / 2,000 ms |
| コード長 | 847 bytes |
| コンパイル時間 | 395 ms |
| コンパイル使用メモリ | 82,216 KB |
| 実行使用メモリ | 61,040 KB |
| 最終ジャッジ日時 | 2025-04-11 21:50:57 |
| 合計ジャッジ時間 | 2,731 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 30 |
ソースコード
import sys
input = lambda :sys.stdin.readline()[:-1]
ni = lambda :int(input())
na = lambda :list(map(int,input().split()))
yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES")
no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO")
#######################################################################
from math import isqrt
# s = isqrt(k)
# s^2 <= n^s < (s+1)^2
def naive(n):
for s in range(1, 1000):
if s * s <= n ^ s < (s + 1) * (s + 1):
return n ^ s
return -1
def solve(n):
# n ^ s <= n + s
# s * s - s <= n
# (s + 1)** 2 > n ^ s >= n & s
for s in range(isqrt(n) + 1000, max(-1, isqrt(n) - 1000), -1):
if s * s <= n ^ s < (s + 1) * (s + 1):
return n ^ s
return -1
for _ in range(ni()):
n = ni()
print(solve(n))