結果
問題 |
No.1871 divisXor
|
ユーザー |
![]() |
提出日時 | 2025-04-16 00:24:47 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,800 bytes |
コンパイル時間 | 305 ms |
コンパイル使用メモリ | 81,784 KB |
実行使用メモリ | 83,756 KB |
最終ジャッジ日時 | 2025-04-16 00:26:31 |
合計ジャッジ時間 | 4,329 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | TLE * 1 -- * 28 |
ソースコード
import math def sum_divisors(x): if x == 0: return 0 total = 0 sqrt_x = int(math.isqrt(x)) for i in range(1, sqrt_x + 1): if x % i == 0: total += i if i != x // i: total += x // i return total def find_single_x(N): max_x = 2 * N - 1 for x in range(1, max_x + 1): if sum_divisors(x) == N: return [x] return None def find_even_pair(N): candidates = [] for x in range(1, 2 * N): if x % 2 == 0: fx = sum_divisors(x) candidates.append((x, fx)) for i in range(len(candidates)): a, fa = candidates[i] for j in range(i + 1, len(candidates)): b, fb = candidates[j] if (fa ^ fb) == N and (a + b) < 2 * N: return [a, b] return None def find_odd_pair(N): target = N ^ 1 candidates = [] for x in range(1, 2 * N): if x % 2 == 0 and x != 1: fx = sum_divisors(x) candidates.append((x, fx)) for i in range(len(candidates)): a, fa = candidates[i] for j in range(i + 1, len(candidates)): b, fb = candidates[j] if (fa ^ fb) == target and (a + b) < (2 * N - 1): return [1, a, b] return None def solve(): N = int(input()) if N == 0: print(-1) return single = find_single_x(N) if single: print(1) print(single[0]) return if N % 2 == 0: pair = find_even_pair(N) if pair: print(2) print(' '.join(map(str, pair))) return else: trio = find_odd_pair(N) if trio: print(3) print(' '.join(map(str, trio))) return print(-1) solve()