結果

問題 No.1880 Many Ways
ユーザー lam6er
提出日時 2025-03-31 17:59:10
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,740 bytes
コンパイル時間 228 ms
コンパイル使用メモリ 82,488 KB
実行使用メモリ 80,728 KB
最終ジャッジ日時 2025-03-31 18:00:09
合計ジャッジ時間 17,399 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 6 WA * 2 RE * 6
権限があれば一括ダウンロードができます

ソースコード

diff #

A = int(input())

if A == 0:
    print("2 0")
elif A == 1:
    print("1 0")
else:
    factors = []
    a = A
    while a > 1:
        for k in range(3, 1, -1):  # Check 3 first, then 2
            if a % k == 0:
                factors.append(k)
                a = a // k
                break
        else:  # Prime number remaining
            factors.append(a)
            a = 1
    sum_factors = sum(factors)
    # Calculate total nodes
    n = sum_factors + 2  # sum_factors layers nodes + start(1) + end
    if n > 128:
        # Re-try factorizing, prioritizing more 2's might help in some cases
        # Alternatively, this problem should ensure a valid solution exists
        factors = []
        a = A
        while a > 1:
            for k in range(2, 1, -1):
                if a % k == 0:
                    factors.append(k)
                    a = a // k
                    break
            else:
                factors.append(a)
                a = 1
        sum_factors = sum(factors)
        n = sum_factors + 2
        if n > 128:
            # If still no, it's a problem, but per problem statement, this won't happen
            pass
    
    # Construct layers
    layers = [[1]]
    current_node = 2
    for k in factors:
        layer = list(range(current_node, current_node + k))
        layers.append(layer)
        current_node += k
    layers.append([current_node])  # End node
    m = 0
    edges = []
    for i in range(len(layers) - 1):
        from_layer = layers[i]
        to_layer = layers[i + 1]
        for u in from_layer:
            for v in to_layer:
                edges.append((u, v))
                m += 1
    print(f"{current_node} {m}")
    for u, v in edges:
        print(f"{u} {v}")
0