#P1136. 循环之诗

    ID: 148 传统题 1000ms 256MiB 尝试: 0 已通过: 0难度: 普及+/提高− ← 上一题 下一题 → 随机一题 上传者: 标签 字符串 KMP 前缀函数
显示设置

循环之诗

题目描述

给定一个只含小写字母的字符串 ss,长度记为 nn。

对 ss 的每一个前缀(长度依次为 1,2,…,n1,2,\dots,n),定义它的「循环节长度」pp:

  • 如果这个前缀可以写成某个长度 pp 的串重复 ∣前缀∣p\dfrac{|前缀|}{p} 次(要求 pp 能整除前缀长度),那么 pp 取最小的这样的值;
  • 否则 pp 就等于这个前缀的长度。

请你求出这 nn 个前缀的 pp 之和。

输入格式

一行一个字符串 ss。

输出格式

一行一个整数,表示所有前缀循环节长度之和。

输入输出样例 #1

输入 #1

abcabcabc

输出 #1

36

说明

数据范围

  • 对于 100%100\% 的数据,1≤n≤1061\le n\le 10^6。和可能到 n(n+1)2≈5×1011\dfrac{n(n+1)}{2}\approx 5\times 10^{11}。