记录编号 |
326454 |
评测结果 |
AAAAAAAAAA |
题目名称 |
拯救紫萱学姐 |
最终得分 |
100 |
用户昵称 |
宋逸群 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.254 s |
提交时间 |
2016-10-21 08:04:50 |
内存使用 |
14.87 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<cmath>
#include<algorithm>
using namespace std;
#define mod 2323237
#define MAXN 1000010
typedef long long ll;
ll n,len,temp,ans,v[MAXN],pre[MAXN];
char ch[MAXN];
void work()
{
while(1){
temp=0;
for(ll i=2;i<=len;i++)
if(ch[i]==ch[1]){
ll flag=1;
for(ll j=i+1;j<=len;j++) if(ch[j]!=ch[1+j-i]) {flag=0; break;}
if(flag) {temp=len-i+1; break;}
}
ans+=(len-temp)*(len-temp);
len=temp;
if(!temp) break;
}
}
int main()
{
freopen("savemzx.in","r",stdin);
freopen("savemzx.out","w",stdout);
scanf("%s",ch+1); n=strlen(ch+1); ll flag=1;
for(ll i=1;i<n;i++) if(ch[i]!=ch[i+1]) {flag=0; break;}
if(flag) {printf("%d\n",n); return 0;}
len=n; work();
len=n-1; work();
printf("%lld\n",ans);
return 0;
}