Pagini recente » Cod sursa (job #2672217) | Cod sursa (job #581286) | Cod sursa (job #1518130) | Cod sursa (job #2418403) | Cod sursa (job #1855234)
#include <bits/stdc++.h>
#define NMAX 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string V;
int KMP[NMAX];
inline void prefix(){
int k = 0;
for(int i = 2; i < V.size(); i++){
while(k && V[k + 1] != V[i])
k = KMP[k];
if(V[k + 1] == V[i])
k++;
KMP[i] = k;
}
}
int main()
{
ios :: sync_with_stdio(false);
fin.tie(NULL);
int T,i;
fin >> T;
getline(fin,V);
while(T--){
getline(fin,V);
V = ' ' + V;
prefix();
for( i = V.size() - 1; i >= 1; i--){
if(i%(i - KMP[i]) == 0 && KMP[i]){
fout << i << "\n";
i = -1;
}
}
if(i == 0)
fout << 0 << "\n";
}
return 0;
}