結果
問題 |
No.3102 floor sqrt xor
|
ユーザー |
|
提出日時 | 2025-07-03 16:26:50 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 959 bytes |
コンパイル時間 | 11,258 ms |
コンパイル使用メモリ | 398,036 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-07-03 16:27:05 |
合計ジャッジ時間 | 13,265 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 30 |
ソースコード
fn getline() -> String { let mut ret = String::new(); std::io::stdin().read_line(&mut ret).ok().unwrap(); ret } fn nth(a: i64, n: i64) -> i64 { let mut pass = 0; let mut fail = std::cmp::min(a, 1 << ((60 + n - 1) / n)) + 1; while fail - pass > 1 { let mid = (fail + pass) / 2; let mut tmp = 1i64; for _ in 0..n { tmp = tmp.saturating_mul(mid); } if tmp <= a { pass = mid; } else { fail = mid; } } pass } fn main() { let t: usize = getline().trim().parse().unwrap(); for _ in 0..t { let n: i64 = getline().trim().parse().unwrap(); let s = nth(n, 2); let mut ans = -1; for x in 0.max(s - 3)..s + 3 { let rem = n ^ x; if rem >= x * x && rem < (x + 1) * (x + 1) { ans = rem; break; } } println!("{ans}"); } }