結果
| 問題 |
No.2929 Miracle Branch
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-10-17 12:41:43 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,406 bytes |
| コンパイル時間 | 410 ms |
| コンパイル使用メモリ | 82,704 KB |
| 実行使用メモリ | 111,512 KB |
| 最終ジャッジ日時 | 2025-10-17 12:41:56 |
| 合計ジャッジ時間 | 12,094 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| 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(2)
print(1, 2)
print('b g')
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)