結果
問題 | No.599 回文かい |
ユーザー |
|
提出日時 | 2021-09-26 10:24:29 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,096 ms / 4,000 ms |
コード長 | 854 bytes |
コンパイル時間 | 140 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 76,288 KB |
最終ジャッジ日時 | 2024-07-05 15:35:38 |
合計ジャッジ時間 | 7,187 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 22 |
ソースコード
import sysinput = lambda : sys.stdin.readline().rstrip()write = lambda x: sys.stdout.write(x+"\n")debug = lambda x: sys.stderr.write(x+"\n")writef = lambda x: print("{:.12f}".format(x))def sub(s):s = [ord(c) for c in s]b = 128cum = [0]v = 1for i in range(len(s)):v *= bv %= Mcum.append(cum[-1] + v*s[i]%M)bs = [1]for _ in range(len(s)+10):bs.append(bs[-1]*b%M)n = len(s)m = (n)//2 + 1dp = [0]*(m)dp[0] = 1for i in range(1,m):val = 0for j in range(i):# if s[j:i]==s[n-i:n-j]:if ((cum[i]-cum[j])*bs[n-j-i]%M == (cum[n-j]-cum[n-i])%M):val += dp[j]if val>M:val -= Mdp[i] = val%Mreturn sum(dp)M = 10**9+7s = input()ans = sub(s)print(ans%M)