Pagini recente » Cod sursa (job #1477983) | Cod sursa (job #2336433) | Cod sursa (job #2610278) | Cod sursa (job #1392799) | Cod sursa (job #603602)
Cod sursa(job #603602)
#include <fstream>
#include <string>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
string s;
int v[1000000],i,t;
int prefix()
{
int k=0,i;
v[0]=v[1]=0;
for (i=2; i<s.size(); i++)
{
while (k>0 && s[k+1]!=s[i]) k=v[k];
if (s[k+1]==s[i]) k++;
v[i]=k;
}
for (i=s.size()-1; i>0; i--) if (i%(i-v[i])==0 && v[i]>0) break;
g << i << '\n';
}
int main()
{
f >> t;
for (i=0; i<t; i++)
{
f >> s;
s=' '+s;
prefix();
}
}