QOJ.ac

QOJ

Time Limit: 6 s Memory Limit: 1024 MB Total points: 100

#5474. 超级可爱的企鹅幼崽

Statistics

这些可爱的企鹅宝宝喜欢吃虫子。有一天,它们的妈妈找到了一条长长的带状虫子,上面写着一些字母。她决定把这条虫子切成若干段,喂给企鹅宝宝吃。

企鹅宝宝们非常喜欢国际大学生程序设计竞赛(International Collegiate Programming Contest),并希望吃到上面写着“ICPC-ish”字符串的虫子段。如果一个字符串满足以下条件,则称其为 ICPC-ish:

  • 它仅由 'C'、'I' 和 'P' 组成。
  • 这三个字符中的两个出现次数相同(可能为零次),而剩下的一个字符出现次数严格更多。

例如,ICPC 和 PPPPPP 是 ICPC-ish 的,但 PIC、PIPCCC 和 PIPE 不是。

给定妈妈找到的虫子上的字符串。妈妈希望将虫子切成一个或多个部分,且每一部分都是 ICPC-ish 字符串,同时不浪费任何剩余部分。你的任务是计算有多少种方法可以这样准备虫子。

输入格式

输入为一行,包含一个仅由 'C'、'I' 和 'P' 组成的字符串 $S$,即企鹅妈妈找到的虫子上的字符串。$S$ 的长度在 $1$ 到 $10^6$ 之间(含边界)。

输出格式

在一行中输出将字符串 $S$ 表示为一个或多个 ICPC-ish 字符串的连接的方法数,结果对质数 $998\,244\,353 = 2^{23} \times 7 \times 17 + 1$ 取模。

样例

样例输入 1

ICPC

样例输出 1

2

样例输入 2

CCCIIIPPP

样例输出 2

69

样例输入 3

PICCICCIPPI

样例输出 3

24

说明

在第一个样例中,字符串 “ICPC” 可以通过以下两种方式表示:

  • 一个单独的 ICPC-ish 字符串,“ICPC”。
  • 四个 ICPC-ish 字符串的连接,“I”、“C”、“P” 和 “C”。

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.