結果
問題 |
No.2929 Miracle Branch
|
ユーザー |
|
提出日時 | 2025-10-17 12:41:07 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,373 bytes |
コンパイル時間 | 316 ms |
コンパイル使用メモリ | 82,112 KB |
実行使用メモリ | 111,324 KB |
最終ジャッジ日時 | 2025-10-17 12:41:21 |
合計ジャッジ時間 | 13,304 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 WA * 1 |
other | AC * 28 WA * 15 |
ソースコード
from collections import Counter def get_primes(size): is_prime = [True] * (size + 1) is_prime[0] = is_prime[1] = False primes = [] for i in range(size + 1): if not is_prime[i]: continue primes.append(i) j = 2 while i * j <= size: is_prime[i * j] = False j += 1 return primes X = int(input()) if X == 1: print(1) exit() fact = [] primes = get_primes(2 << 17) for p in primes: while X % p == 0: fact.append(p) X //= p if X != 1: print(-1) exit() counter = Counter(fact) n = 0 t = 0 keys = [] for k, v in counter.items(): if k == 2: t += (v + 1) // 2 n += (v // 2) * 5 n += (v % 2) * 3 for _ in range(v // 2): keys.append(2 * k) if v % 2 == 1: keys.append(k) else: keys.append(k) t += v n += (k + 1) * v keys.sort() LIMIT = 200_000 if n > LIMIT: print(-1) exit() print(n) brown = [] green = [] for v in range(t): brown.append(v) for v in range(t, n): green.append(v) edge = [] for i in range(t - 1): edge.append((i, i + 1)) j = t for i, k in enumerate(keys): for _ in range(k): edge.append((i, j)) j += 1 for i, j in edge: print(i + 1, j + 1) colors = ['b'] * len(brown) + ['g'] * len(green) print(*colors)