QOJ.ac

QOJ

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

#9362. 折疊

Statistics

我們定義一種對字串的操作,稱為折疊。折疊由若干次(可以是零次)對折組成。每次對折都發生在兩個相鄰字母之間,將字串的後半部分(距離字串開頭較遠的部分)放到前半部分(距離字串開頭較近的部分)的上方,使兩者方向相反,並在對折位置對齊。透過這個操作,字串會變成一個結構,其層數比進行的對折次數多一。

折疊後,可以將字串看成若干堆字母。如果同一堆中的所有字母都相同,我們稱這個折疊是合法的。

折疊的對應集合,是原字串中緊接在各個對折位置之前的字母位置所組成的集合。例如,只在第 2 個與第 3 個字母之間對折一次的折疊,其對應集合為 $\{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

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_7727e9d3155af34d9ff8530b6b84bc76.png

這是字串 aabccbaa 的一個絕妙折疊。對應集合為 $\{1,4,7\}$。

problem_9362_137b8c84caa602474c404d4407b418f8.png

這是字串 abc 的一個絕妙折疊。對應集合為 $\varnothing$。

problem_9362_6a69d4d78c3dfbe088102cc142993fde.png

這不是合法的折疊,但它確實是一個折疊,且其對應集合是等差的。對應集合為 $\{2,6,10\}$。

problem_9362_6b169b8614685b7639386f1e1a61d6b8.png

這不是折疊,因為上半部分與下半部分的方向相同。

problem_9362_e1a14bc9ac44d5086ac6e7a3012ce287.png

這不是折疊,因為上半部分不是方向相同(如果認為它向右延伸),就是沒有對齊(如果認為它向左延伸)。

problem_9362_45ae70cf4c609b2be3ec8e26d1693259.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.