Cod sursa(job #2554450)
| Utilizator | Data | 22 februarie 2020 21:54:18 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.76 kb |
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char ch[1000001];
int pi[1000001];
int main()
{
int n,q,l,i,dif,lenfin;
in>>n;
in.get();
for(q=1;q<=n;q++)
{
in.get(ch+1,1000001);
in.get();
l=strlen(ch+1);
lenfin=0;
int now=0;
for(i=2;i<=l;i++)
{
while(now>0 && ch[now+1]!=ch[i])
{
now=pi[now];
}
if(ch[now+1]==ch[i])
{
now++;
}
pi[i]=now;
dif=i-now;
if(now!=0 && i%dif==0)
lenfin=i;
}
out<<lenfin<<'\n';
}
return 0;
}
