#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
__int64 dp[5000000+5];
char s[5000000+5];
using namespace std;
int main(void)
{
__int64 ans=0,l=0,r=0,k=1;
scanf("%s",s);
for(int i=0;s[i];i++)
{
l=l*33+s[i]-'a';
r=r+(s[i]-'a')*k;
k=k*33;
if(l==r)
dp[i+1]=dp[(i+1)/2]+1;
ans+=dp[i+1];
}
cout<<ans<<endl;
return 0;
}Codeforces Beta Round #7, problem: (D) Palindrome Degree
最新推荐文章于 2022-07-28 16:33:21 发布
本文介绍了一个使用C++实现的字符串匹配算法,通过计算特定的哈希值来高效地判断字符串的相等性,并利用动态规划的方法统计字符串中相同子串的数量。
380

被折叠的 条评论
为什么被折叠?



