Pagini recente » Cod sursa (job #2387689) | Cod sursa (job #798558) | Cod sursa (job #820827) | Cod sursa (job #918071) | Cod sursa (job #2109152)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
#define mx 1000001
int z,m,urm[mx];
char p[mx];
void next (int m) {
int k=0;
urm[1]=0;
for (int i=2;i<=m;++i) {
while (k>0 && p[k+1]!=p[i])
k=urm[k];
if (p[k+1]==p[i])
++k;
urm[i]=k;}}
int main () {
f>>z;
f.get();
for (int i=1;i<=z;++i) {
p[0]='*';
p[1]='\0';
f.getline(p+1,mx);
m=strlen(p);
next(m);
int poz=0;
for (int j=2;j<=m;++j)
if (urm[j] && j%(j-urm[j])==0)
poz=j;
g<<poz<<'\n';}
return 0;
}