atcoder#ABC301F. [ABC301F] Anti-DDoS
[ABC301F] Anti-DDoS
题目描述
英大文字・英小文字からなる長さ の文字列で、以下の 条件をともに満たすものを DDoS
型文字列と呼ぶことにします。
- 文字目が英大文字で、 文字目が英小文字である
- 文字目が等しい
例えば DDoS
, AAaA
は DDoS
型文字列であり、ddos
, IPoE
は DDoS
型文字列ではありません。
英大文字・英小文字および ?
からなる文字列 が与えられます。 に含まれる ?
を独立に英大文字・英小文字に置き換えてできる文字列は、 に含まれる ?
の個数を として 通りあります。 このうち DDoS
型文字列を部分列に含まないものの個数を で割ったあまりを求めてください。
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
答えを出力せよ。
题目大意
- 定义形如
DDoS
的序列为类 DDoS 序列,其中DD
表示两个相同的任意大写字母,o
表示任意小写字母,S
表示任意大写字母。 - 给定一个由大小写字母和
?
组成的序列 ,问有多少种将?
替换为大小写字母的方案可以使 不含有任何一个类 DDoS 子序列,答案对 取模。
DD??S
676
????????????????????????????????????????
858572093
?D??S
136604
提示
注記
文字列の部分列とは、文字列から 個以上の文字を取り除いた後、残りの文字を元の順序で連結して得られる文字列のことをいいます。
例えば、AC
は ABC
の部分列であり、RE
は ECR
の部分列ではありません。
制約
- は英大文字・英小文字および
?
からなる - の長さは 以上 以下
Sample Explanation 1
?
の少なくとも一方が英小文字のとき、DDoS
型文字列を部分列に含みます。
Sample Explanation 2
で割ったあまりを求めてください。