Pagini recente » Cod sursa (job #2548951) | Cod sursa (job #2405847) | Cod sursa (job #2225167) | Cod sursa (job #420878) | Cod sursa (job #1147847)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char c[1000005];
int pi[1000005];
int main()
{
int T;
fin>>T;
fin.getline(c,200);
for(int q = 1; q<=T; q++)
{
fin.getline(c+1,1000002);
int n = strlen(c+1);
pi[1] = 0;
int k = 0;
int times = 2;
int kmax = 0;
for(int i=2;i<=n;i++)
{
while(k && c[i] != c[k+1])
k = pi[k];
if(c[i] == c[k+1])
++k;
pi[i] = k;
}
bool found = false;
for(int i=n;i && !found;i--)
if(pi[i] && i%(i-pi[i]) == 0)
{
found = true;
fout<<i<<'\n';
}
if(!found)
fout<<"0\n";
for(int i=1;i<=n;i++)
{
c[i] = 0;
pi[i] = 0;
}
}
fin.close();
fout.close();
return 0;
}