結果

問題 No.1740 Alone 'a'
ユーザー MasKoaTSMasKoaTS
提出日時 2021-11-13 12:55:35
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 453 ms / 2,000 ms
コード長 1,696 bytes
コンパイル時間 160 ms
コンパイル使用メモリ 82,252 KB
実行使用メモリ 178,012 KB
最終ジャッジ日時 2024-05-05 10:55:06
合計ジャッジ時間 12,415 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 129 ms
85,860 KB
testcase_01 AC 128 ms
86,204 KB
testcase_02 AC 124 ms
86,308 KB
testcase_03 AC 453 ms
178,012 KB
testcase_04 AC 439 ms
177,924 KB
testcase_05 AC 166 ms
91,980 KB
testcase_06 AC 169 ms
90,792 KB
testcase_07 AC 143 ms
89,452 KB
testcase_08 AC 126 ms
86,248 KB
testcase_09 AC 130 ms
86,244 KB
testcase_10 AC 128 ms
86,272 KB
testcase_11 AC 205 ms
101,640 KB
testcase_12 AC 378 ms
155,304 KB
testcase_13 AC 379 ms
155,504 KB
testcase_14 AC 432 ms
177,552 KB
testcase_15 AC 156 ms
89,856 KB
testcase_16 AC 361 ms
147,968 KB
testcase_17 AC 152 ms
89,652 KB
testcase_18 AC 192 ms
96,880 KB
testcase_19 AC 391 ms
156,392 KB
testcase_20 AC 278 ms
119,532 KB
testcase_21 AC 302 ms
132,224 KB
testcase_22 AC 348 ms
146,816 KB
testcase_23 AC 349 ms
145,904 KB
testcase_24 AC 280 ms
119,964 KB
testcase_25 AC 280 ms
120,756 KB
testcase_26 AC 313 ms
132,992 KB
testcase_27 AC 340 ms
137,092 KB
testcase_28 AC 305 ms
126,420 KB
testcase_29 AC 446 ms
177,480 KB
testcase_30 AC 331 ms
135,344 KB
testcase_31 AC 370 ms
147,196 KB
testcase_32 AC 292 ms
126,700 KB
testcase_33 AC 351 ms
147,064 KB
testcase_34 AC 198 ms
98,664 KB
testcase_35 AC 310 ms
125,420 KB
testcase_36 AC 265 ms
117,316 KB
testcase_37 AC 206 ms
99,712 KB
testcase_38 AC 250 ms
113,140 KB
testcase_39 AC 178 ms
92,356 KB
testcase_40 AC 232 ms
104,044 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import itertools as iter
import collections as coll
import heapq as hq
import bisect as bis
from decimal import Decimal as dec
from copy import deepcopy as dcopy
import math
import sys
sys.setrecursionlimit(10**6)
def input():
    return sys.stdin.readline().rstrip()
def getN():
	return int(sys.stdin.readline())
def getNs():
	return map(int,sys.stdin.readline().split())
def getList():
	return list(map(int,sys.stdin.readline().split()))
def strinps(n):
	return [sys.stdin.readline().rstrip() for _ in range(n)]
pi = 3.141592653589793
mod = 10**9+7
MOD = 998244353
INF = math.inf
dx = [1,0,-1,0];	dy = [0,1,0,-1]

def ctoi(char):
	return ord(char)-ord('a')

"""
Main Code
"""

n = getN()
s = input()
l = [ctoi(c) for c in s]

dp = [[0]*4 for _ in [0]*n]
ndp = dcopy(dp)
dp[0][0b00] = max(0,l[0]-1)
dp[0][0b01] = int(l[0] != 0)
dp[0][0b10] = int(l[0] != 0)
dp[0][0b11] = int(l[0] == 0)
#print(dp)
for i in range(1,n):
	# 0 を 1 つも含まず、S より小さい
	dp[i][0b00] += dp[i-1][0b00] * 25;				dp[i][0b00] %= MOD
	dp[i][0b00] += dp[i-1][0b10] * max(0,l[i]-1);	dp[i][0b00] %= MOD
	# 0 を 1 つだけ含み、S より小さい
	dp[i][0b01] += dp[i-1][0b00];					dp[i][0b01] %= MOD
	dp[i][0b01] += dp[i-1][0b01] * 25;				dp[i][0b01] %= MOD
	dp[i][0b01] += dp[i-1][0b10] * (l[i] != 0);		dp[i][0b01] %= MOD
	dp[i][0b01] += dp[i-1][0b11] * max(0,l[i]-1);	dp[i][0b01] %= MOD
	# 0 を 1 つも含まず、S と等しい
	dp[i][0b10] += dp[i-1][0b10] * (l[i] != 0);		dp[i][0b10] %= MOD
	# 0 を 1 つだけ含み、S と等しい
	dp[i][0b11] += dp[i-1][0b10] * (l[i] == 0);		dp[i][0b11] %= MOD
	dp[i][0b11] += dp[i-1][0b11] * (l[i] != 0);		dp[i][0b10] %= MOD
	#print(dp)
print(dp[n-1][0b01])
0