Pagini recente » Cod sursa (job #377933) | Cod sursa (job #3294207) | Cod sursa (job #1055640) | Cod sursa (job #3294596) | Cod sursa (job #2482157)
#include <fstream>
#include <string>
#include <vector>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
vector <int> make_lps(string &s)
{
vector <int> lps;
lps.push_back(0);
int i=0,j=1,n=s.size();
while(j<n)
{
if(s[i]==s[j])
++i,lps.push_back(i),++j;
else
if(i!=0)
i=lps[i-1];
else
lps.push_back(0),++j;
}
return lps;
}
int main()
{
int n;
f>>n;
while(n--)
{
string s;
f>>s;
vector <int> lps=make_lps(s);
int m=s.size();
while(m>0 && (!lps[m-1] || m%(m-lps[m-1])))
--m;
g<<m<<'\n';
}
return 0;
}