結果
| 問題 |
No.1871 divisXor
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 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()
lam6er