Codeforces Beta Round #七, problem: (D) Palindrome Degree

Codeforces Beta Round #7, problem: (D) Palindrome Degree#includeiostream#includecstdio#include

Codeforces Beta Round #7, problem: (D) Palindrome Degree

#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;}