結果
| 問題 | No.2541 Divide 01 String | 
| コンテスト | |
| ユーザー |  sasa8uyauya | 
| 提出日時 | 2023-11-24 21:32:11 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 89 ms / 2,000 ms | 
| コード長 | 305 bytes | 
| コンパイル時間 | 259 ms | 
| コンパイル使用メモリ | 82,176 KB | 
| 実行使用メモリ | 89,472 KB | 
| 最終ジャッジ日時 | 2024-09-26 08:55:17 | 
| 合計ジャッジ時間 | 2,433 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 20 | 
ソースコード
M=998244353
n=int(input())
s=list(map(int,input()+"0"))
for i in range(n):
  s[i]+=s[i-1]
q=[0]*(n+1)
q[0]=1
q[1]=-1
l=0
for i in range(n+1):
  q[i]+=q[i-1]
  q[i]%=M
  l=max(l,i)
  while l+1<=n and s[l+1-1]-s[i-1]==0:
    l+=1
  if l+1<=n and s[l+1-1]-s[i-1]>0:
    q[l+1]+=q[i]
    q[l+1]%=M
print(q[n])
            
            
            
        