結果
問題 |
No.3040 Aoiスコア
|
ユーザー |
👑 ![]() |
提出日時 | 2025-03-01 19:48:05 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,058 bytes |
コンパイル時間 | 260 ms |
コンパイル使用メモリ | 82,356 KB |
実行使用メモリ | 78,364 KB |
最終ジャッジ日時 | 2025-06-20 21:02:52 |
合計ジャッジ時間 | 2,878 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 15 WA * 11 |
ソースコード
N,M = map(int,input().split()) S = input() lis = [ [] for i in range(N) ] for i in range(M): A,B = map(int,input().split()) A -= 1 B -= 1 lis[A].append(B) lis[B].append(A) qnum_base = 0 for i in range(N): if S[i] == "?": qnum_base += 1 mod = 998244353 ans = 0 for v in range(N): aoiq = [0,0,0,0] if S[v] not in "o?": continue if S[v] == "o": qnum = qnum_base else: qnum = qnum_base-1 for i in lis[v]: if S[i] == "a": aoiq[0] += 1 elif S[i] == "o": aoiq[1] += 1 elif S[i] == "i": aoiq[2] += 1 else: aoiq[3] += 1 ans += aoiq[0] * aoiq[2] * pow(26,qnum,mod) % mod ans %= mod if aoiq[3] >= 1: ans += aoiq[0] * aoiq[3] * pow(26,qnum-1,mod) % mod ans %= mod ans += aoiq[3] * aoiq[2] * pow(26,qnum-1,mod) % mod ans %= mod if aoiq[3] >= 2: ans += aoiq[3] * (aoiq[3]-1) * pow(26,qnum-2,mod) % mod ans %= mod print (ans % mod)