QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 512 MB Total points: 100 Hackable ✓

#9362. 折りたたみ

Statistics

文字列に対する「折りたたみ」という操作を定義します。折りたたみは、何回か(0 回でもかまいません)の折る操作からなります。それぞれの折る操作では、隣り合う 2 文字の間で折り、文字列の後半部分(文字列の先頭から遠い側)を前半部分(文字列の先頭に近い側)の上に、逆向きにして、折り目の位置をそろえて重ねます。この操作によって、文字列は、行った折る操作の回数よりも層が 1 つ多い構造に変換されます。

折りたたみ後の文字列は、文字を重ねた山がいくつか並んだものと見なせます。同じ山にある文字がすべて等しいとき、その折りたたみは有効であるといいます。

折りたたみの対応する集合とは、元の文字列において各折り目の直前にある文字の位置の集合です。例えば、2 文字目と 3 文字目の間で 1 回だけ折った折りたたみの対応する集合は $\{2\}$ であり、0 回折った折りたたみの対応する集合は空集合です。2 つの折りたたみは、その対応する集合が等しいとき、かつそのときに限り、同じと見なします。

整数 $a,b$ ($0 \le b < a$) を選んで、$x \in S \iff 1 \le x < n,\ x \equiv b \pmod a$ とできるとき、集合 $S$ は等差的であるといいます。ここで $n$ は文字列の長さです。例えば $n=10$ の場合、集合 $\varnothing$、$\{2\}$、$\{1,9\}$、$\{2,4,6,8\}$ は等差的ですが、集合 $\{1,2,4\}$、$\{1,5\}$、$\{7,8,9\}$ は等差的ではありません。

有効であり、かつ対応する集合が等差的である折りたたみを素晴らしいといいます。理解の助けとして、次のページの図を参照してください。

文字列が与えられます。与えられた文字列の素晴らしい折りたたみの個数を数えてください。

入力

唯一の行に、ラテン文字、数字、アンダースコア、ハイフンからなる長さ $n$ ($1 \le n \le 10^6$) の文字列が与えられます。

出力

与えられた文字列の素晴らしい折りたたみの個数を、1 つの整数として出力してください。

入出力例

入力 1

aaaaa

出力 1

9

入力 2

V-oo-V

出力 2

2

入力 3

gritukan

出力 3

1

入力 4

Lhic

出力 4

1

入力 5

OO0OOO00O0OOOO0O00OOO0OO

出力 5

6

入力 6

SpyCheessee

出力 6

3

入力 7

Aa

出力 7

1

入力 8

228322

出力 8

4

入力 9

______________________________________

出力 9

380

注記

最初の例の素晴らしい折りたたみの対応する集合は、$\varnothing$、$\{1\}$、$\{2\}$、$\{3\}$、$\{4\}$、$\{1,3\}$、$\{1,4\}$、$\{2,4\}$、$\{1,2,3,4\}$ です。

problem_9362_2346c717220832cdb2128c4d37479e37.png

これは文字列 `aabccbaa` の素晴らしい折りたたみです。対応する集合は $\{1,4,7\}$ です。

problem_9362_6865e5110b7e504bc7e139f3db27d97b.png

これは文字列 `abc` の素晴らしい折りたたみです。対応する集合は $\varnothing$ です。

problem_9362_fec090d37a60e900430e12a5e7c9b05e.png

これは有効な折りたたみではありませんが、折りたたみであり、対応する集合は等差的です。対応する集合は $\{2,6,10\}$ です。

problem_9362_b67990ef9da16c4ee42ea284527f0ce5.png

上側の部分が下側と同じ向きに進んでいるので、これは折りたたみではありません。

problem_9362_4d19323ce75ba5f593064003d2d1a392.png

上側の部分が同じ向きに進んでいる(右向きに進むと考えた場合)か、位置がそろっていない(左向きに進むと考えた場合)ので、これは折りたたみではありません。

problem_9362_8f58998ebc43dec741451bb6a47d40f3.png

これは有効な折りたたみですが、対応する集合は等差的ではありません。対応する集合は $\{4,6\}$ です。

そして、これが TeX の使い方です。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.