問題一覧 > 通常問題

No.1171 Runs in Subsequences

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 176
作問者 : opt / テスター : Kiri8128
21 ProblemId : 4729 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2020-10-17 00:10:06

問題文

英小文字からなる文字列 S が与えられます.

S の長さを N とすると,S の非空な部分列は全部で 2N1 個あります(2 つの部分列が文字列として同じでも,取り出す位置が異なれば区別します).

2N1 個の各部分列について (Run) の個数を求め,その総和を 109+7 で割った余りを求めてください.

ここで,文字列の連とは,「同一の文字が連続する非空かつ極大な区間」を指します. 例えば,abbbacc の連は abbbacc4 つです. 2 つの連が文字列として同じでも,位置が異なれば区別することに注意してください.

入力

入力は以下の形式で与えられる:

S
  • S は英小文字のみからなる文字列
  • 1|S|2×105

出力

連の個数の総和を 109+7 で割った余りを出力せよ. 最後に改行を出力すること.

サンプル

サンプル1
入力
aba
出力
11

aba の非空部分列は abaabaabaaba7 個あります.

これらの連の個数の総和は 1+1+1+2+1+2+3=11 です.

サンプル2
入力
zzzzzzz
出力
127

非空部分列は 271=127 個あります. 連の個数はどれも 1 なので,127 を出力します.

サンプル3
入力
abcaaabacc
出力
3856
サンプル4
入力
supercalifragilisticexpialidocious
出力
636565047

109+7 で割った余りを出力してください.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。