#x1031. CF932G Palindrome Partition

CF932G Palindrome Partition

Palindrome Partition

题面翻译

给定一个串,把串分为偶数段

假设分为了s1,s2,s3....sks1,s2,s3....sk

求,满足s1=sk,s2=sk1......s_1=s_k,s_2=s_{k-1}...... 的方案数

题目描述

Given a string s s , find the number of ways to split s s to substrings such that if there are k k substrings (p1,p2,p3,...,pk) (p_{1},p_{2},p_{3},...,p_{k}) in partition, then pi=pki+1 p_{i}=p_{k-i+1} for all i i (1<=i<=k) (1<=i<=k) and k k is even.

Since the number of ways can be large, print it modulo 109+7 10^{9}+7 .

输入格式

The only line of input contains a string s s (2<=s<=106) (2<=|s|<=10^{6}) of even length consisting of lowercase Latin letters.

输出格式

Print one integer, the number of ways of partitioning the string modulo 109+7 10^{9}+7 .

样例 #1

样例输入 #1

abcdcdab

样例输出 #1

1

样例 #2

样例输入 #2

abbababababbab

样例输出 #2

3

提示

In the first case, the only way to partition the string is abcdcdab ab|cd|cd|ab .

In the second case, the string can be partitioned as abbababababbab ab|b|ab|ab|ab|ab|b|ab or abbababababbab ab|b|abab|abab|b|ab or abbababababbab abbab|ab|ab|abbab .