Cod sursa(job #2653557)
| Utilizator | Data | 28 septembrie 2020 15:25:56 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int t;
int main()
{
fin>>t;
while(t--){
string s;
fin>>s;
int n=s.size();
vector<int> pi(n, 0);
int sol=0;
for(int i=1;i<n;++i){
int j=pi[i-1];
while(j&&s[i]!=s[j]) j=pi[j-1];
if(s[i]==s[j]) j++;
pi[i]=j;
if(pi[i]&&((i+1)%(i-pi[i]+1)==0)) sol=i+1;
}
fout<<sol<<"\n";
}
return 0;
}
