結果

問題 No.2653 [Cherry 6th Tune] Re: start! (Make it Zero!)
ユーザー 👑 KazunKazun
提出日時 2023-12-08 01:47:29
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,327 bytes
コンパイル時間 381 ms
コンパイル使用メモリ 82,108 KB
実行使用メモリ 105,900 KB
最終ジャッジ日時 2024-09-29 04:33:40
合計ジャッジ時間 14,421 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 38 ms
53,092 KB
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 WA -
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 WA -
testcase_31 WA -
testcase_32 WA -
testcase_33 WA -
testcase_34 WA -
testcase_35 WA -
testcase_36 WA -
testcase_37 WA -
testcase_38 WA -
testcase_39 WA -
testcase_40 WA -
testcase_41 WA -
testcase_42 WA -
testcase_43 WA -
testcase_44 WA -
testcase_45 WA -
testcase_46 WA -
testcase_47 WA -
testcase_48 WA -
testcase_49 WA -
testcase_50 WA -
testcase_51 WA -
testcase_52 WA -
testcase_53 WA -
testcase_54 WA -
testcase_55 WA -
testcase_56 WA -
testcase_57 WA -
testcase_58 WA -
testcase_59 WA -
testcase_60 WA -
testcase_61 WA -
testcase_62 WA -
testcase_63 AC 93 ms
76,304 KB
testcase_64 AC 91 ms
75,852 KB
testcase_65 AC 91 ms
76,280 KB
testcase_66 AC 112 ms
76,968 KB
testcase_67 AC 113 ms
76,664 KB
testcase_68 AC 115 ms
76,608 KB
testcase_69 WA -
testcase_70 WA -
testcase_71 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

def solve():
    N, M = map(int, input().split())
    X = list(map(int, input().split()))
    Mod = 998244353

    Q = X.count(-1)
    if Q == 1:
        i = X.index(-1)
        X[i] = (- sum(X[j] for j in range(N) if j != i)) % M

    if -1 not in X:
        if sum(X) % M != 0:
            return 0

        cum = 0
        k = 0
        for x in X:
            cum += x; cum %= M
            if cum == 0:
                k += 1
        return N - k

    left = min(i for i in range(N) if X[i] == -1)
    right = max(i for i in range(N) if X[i] == -1)

    cum = 0
    S = 0
    M_pow_Q1 = pow(M, Q - 1, Mod); M_pow_Q2 = pow(M, Q - 2, Mod)

    for i in range(N):
        if i < left:
            cum += X[i]; cum %= M
            if cum == 0:
                S += M_pow_Q1
        elif left <= i < right:
            S += M_pow_Q2
        else:
            if i == right:
                lazy = sum(X[i] for i in range(left, right) if X[i] != -1)
                cum += lazy
            else:
                cum += X[i]
            cum %= M
            if cum == 0:
                S += M_pow_Q1

    return (N * M_pow_Q1 - S) % Mod

#==================================================
import sys
input = sys.stdin.readline
write = sys.stdout.write

T = int(input())
write("\n".join(map(str, [solve() for _ in range(T)])))
0