QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 512 MB 总分: 100 可 Hack ✓

#9362. 折叠

统计

我们定义一种作用于字符串的操作,称为“折叠”。折叠由若干次(可能为零次)折叠动作组成。每次折叠发生在两个相邻字符之间,将字符串的后半部分(距离字符串开头较远的部分)翻转并放置在前半部分(距离字符串开头较近的部分)之上,使其与折叠位置对齐。通过这种操作,字符串被转换为一个层数比折叠次数多一层的结构。

折叠后,字符串可以看作是若干堆字符。如果同一堆中的所有字符都相同,我们称该折叠是“有效的”。

折叠的“对应集合”是指折叠位置在原字符串中紧邻的前一个字符的位置集合。例如,在第 2 个字符和第 3 个字符之间进行一次折叠,其对应集合为 $\{2\}$;零次折叠的对应集合为空集。仅当两个折叠的对应集合相同时,才认为这两个折叠是相同的。

如果存在整数 $a$ 和 $b$ ($0 \le b < a$),使得对于字符串长度 $n$,满足 $x \in S \iff 1 \le x < n, x \equiv b \pmod a$,则称集合 $S$ 是“等差的”。例如,当 $n=10$ 时,集合 $\emptyset, \{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

000000000000000000000000

样例输出 5

6

样例输入 6

SpyCheessee

样例输出 6

3

样例输入 7

Aa

样例输出 7

1

样例输入 8

228322

样例输出 8

4

样例输入 9

______________________________________

样例输出 9

380

说明

在第一个样例中,极好折叠的对应集合为:$\emptyset, \{1\}, \{2\}, \{3\}, \{4\}, \{1, 3\}, \{1, 4\}, \{2, 4\}, \{1, 2, 3, 4\}$。

这是字符串 "aabccbaa" 的一个极好折叠。对应集合为 $\{1, 4, 7\}$。

这是字符串 "abc" 的一个极好折叠。对应集合为 $\emptyset$。

这不是一个有效的折叠,但它是一个折叠,且具有等差的对应集合。对应集合为 $\{2, 6, 10\}$。

这不是一个折叠,因为上半部分与下半部分运行方向相同。

这不是一个折叠,因为上半部分要么运行方向相同(如果我们认为它向右运行),要么未对齐(如果我们认为它向左运行)。

这是一个有效的折叠,但其对应集合不是等差的。对应集合为 $\{4, 6\}$。

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.