Cod sursa(job #1517824)
| Utilizator | Data | 4 noiembrie 2015 21:39:57 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.7 kb |
#include<cstdio>
#include<cstring>
using namespace std;
char s[1000010];
int prefix[1000010];
int main(){
freopen("prefix.in","r",stdin);
freopen("prefix.out","w",stdout);
int t,q,n,i,j;
scanf("%d\n",&t);
for(q=1;q<=t;q++){
scanf("%s",s+1);
n=strlen(s+1);
i=0;
for(j=2;j<=n;j++){
if(s[i+1]==s[j])
i++;
else
if(s[1]==s[j])
i=1;
else
i=0;
prefix[j]=i;
}
for(j=n;j>=1;j--)
if(prefix[j]>0&&j%(j-prefix[j])==0)
break;
printf("%d\n",j);
}
return 0;
}
