結果
問題 | No.2131 Concon Substrings (COuNt Version) |
ユーザー |
|
提出日時 | 2023-11-25 14:44:03 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 900 ms / 2,000 ms |
コード長 | 1,663 bytes |
コンパイル時間 | 472 ms |
コンパイル使用メモリ | 82,464 KB |
実行使用メモリ | 147,936 KB |
最終ジャッジ日時 | 2024-09-26 10:46:39 |
合計ジャッジ時間 | 7,696 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 16 |
ソースコード
from collections import *from itertools import *from functools import *from heapq import *import sys,mathinput = sys.stdin.readlineN = int(input())mod = 998244353# class combination():# def __init__(self,N,p):# self.fact = [1, 1] # fact[n] = (n! mod p)# self.factinv = [1, 1] # factinv[n] = ((n!)^(-1) mod p)# self.inv = [0, 1] # factinv 計算用# self.p = p# for i in range(2, N + 1):# self.fact.append((self.fact[-1] * i) % p)# self.inv.append((-self.inv[p % i] * (p // i)) % p)# self.factinv.append((self.factinv[-1] * self.inv[-1]) % p)# def cmb(self,n, r):# if (r < 0) or (n < r):# return 0# r = min(r, n - r)# return self.fact[n] * self.factinv[r] * self.factinv[n-r] % self.p# C = combination(10000)M = N//3 + 1dp = [[[0]*N for j in range(M+1)] for _ in range(3)]dp[0][0][0] = 1for i in range(N-1):for j in range(M):for k in range(3):#dp[k][j][i]if k==2:dp[0][j+1][i+1] = (dp[0][j+1][i+1] + dp[k][j][i])%modelse:dp[k+1][j][i+1] = (dp[k+1][j][i+1] + dp[k][j][i])%moddp[k][j][i+1] = (dp[k][j][i+1] + 25*dp[k][j][i])%modif (k==0)&(j==0):dp[k][j][i+1] = (dp[k][j][i+1] + pow(25,i+1,mod))%modans = 0for j in range(M+1):ans += dp[2][j][-1]*(j+1)ans += dp[1][j][-1]*(j)ans += dp[0][j][-1]*(j)ans %= mod# print(dp[2])# print(dp)print(ans)