Pagini recente » Cod sursa (job #2846936) | Clasament adobe | Cod sursa (job #416846) | Cod sursa (job #2229514) | Cod sursa (job #2100864)
#include <bits/stdc++.h>
#define MAX 1000002
using namespace std;
ifstream fin ("prefix.in");
ofstream fout ("prefix.out");
char s[MAX];
int pi[MAX], maxim;
void kmp (int n)
{
for ( int i = 2; i <= n; ++i )
{
pi[i] = pi[i-1];
while ( pi[i] && s[i] != s[pi[i]+1] )
pi[i] = pi[pi[i]];
if ( s[i] == s[pi[i]+1] )
pi[i]++;
maxim = max (maxim, pi[i]);
}
}
void prefix (int n)
{
for ( int i = n; i >= 2; --i )
if ( pi[i] && (i%(i-pi[i]) == 0) )
{
fout<<i<<'\n';
return;
}
fout<<0<<'\n';
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(NULL);cout.tie(NULL);
int t;
fin>>t;
while (t--)
{
fin>>(s+1);
int n = strlen(s+1);
kmp(n);
prefix(n);
}
}