不知道为什么WA在了第六个点
我拿题解测了很多组数据都是对的
有没有什么hack数据\
求各位大佬帮帮蒟蒻
#include<stdio.h>
#include<string.h>
#include<iostream>
#define N 500010
using namespace std;
char s[N];
long long Next[N],Index[N],Length[N],Mod[N];
long long n,cnt,ans,posa,posb,MaxM;
char lastc;
bool Flag,flag;
int main()
{
scanf("%s",s+1);
n= strlen(s+1);
for(long long i=2;i<=n;++i)
{
if(s[i]!=s[i-1])
{
Flag=true;
break;
}
}
if(!Flag)
{
printf("%d\n1\n",n);
return 0;
}
Next[1]=0;
for(long long i=2,j=0;i<=n;++i)
{
while (j>0&&s[i]!=s[j+1])j=Next[j];
if(s[i]==s[j+1])++j;
Next[i]=j;
//printf("%d %d\n",i,Next[i]);
if((i%(i-Next[i]))==0)
{
Index[++cnt]=i;
Length[cnt]=(i/(i-Next[i]));
Mod[cnt]=i-Next[i];
}
}
//printf("%d %d\n",Index[cnt],cnt);
if(Index[cnt]!=n || (Index[cnt]==n && Length[cnt] <=1 ))
{
printf("1\n");
printf("1\n");
return 0;
}
lastc=s[1];
posa=2;
while(lastc==s[posa])posa++;
lastc=s[n];
posb=n-1;
while(lastc==s[posb])posb--;
//printf("%d %d %d %d\n",posa,posb,Mod[cnt],n-Mod[cnt]);
for(int i=1;i<=n;++i)MaxM=max(MaxM,Mod[i]);
for(int i=posa;i<posb;++i)
{
if(((i%MaxM)==0))continue;
++ans;
}
if(MaxM==n-MaxM)ans++;
printf("2\n");
printf("%lld\n",ans+2);
}
/*lld\nlld\nlld\nlld\nlld\nlld\nlld\nlld\nlld\nlld\nlld\n*/