Pagini recente » Cod sursa (job #993489) | Cod sursa (job #2647746) | Cod sursa (job #1124871) | Cod sursa (job #2227006) | Cod sursa (job #1581428)
#include <fstream>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,i,j,pr[1000001],n,k,l[1000001];
string s;
bool ok;
int main()
{
f>>t;
for (i=1;i<=t;i++)
{
f>>s;
n=s.length();
for (j=n;j>=1;j--)
s[j]=s[j-1];
k=0;
for (j=2;j<=n;j++)
{
while(k && s[k+1]!=s[j])
k=pr[k];
if (s[k+1]==s[j])
k++;
pr[j]=k;
}
ok=false;
for (j=n;j>=1;j--)
if (pr[j] && j%(j-pr[j])==0)
g<<j<<'\n',ok=true,j=0;
if (ok==false) g<<0<<'\n';
}
return 0;
}