http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=27980
#include<bits/stdc++.h>
using namespace std;
int dps[10003];
int dpe[10003];
int main()
{
string s;
cin>>s;
int len = s.size();
int i,j;
for(i=0;i<=len;i++)
dps[i]=dpe[i]=1;
for(i=0;i<len;i++)//找到回文是偶数的
{
for(j=0;j<len;j++)
{
if(i-j<0)
break;
if(s[i-j]==s[i+j+1])
{
dps[i-j]++;
dpe[i+j+1]++;
}
else
break;
}
}
for(i=1;i<len;i++)//找回文是奇数的
{
for(j=1;j<len;j++)
{
if(i-j<0)
break;
if(s[i-j]==s[i+j])
{
dps[i-j]++;
dpe[i+j]++;
}
else
break;
}
}
long long ans=0;
for(i=0;i<len;i++)
{
long long sum=0;
for(j=i+1;j<len;j++)
{
sum+=dps[j];
}
ans+=sum*dpe[i];
}
cout<<ans<<endl;
}