Pagini recente » Cod sursa (job #1818969) | Cod sursa (job #141841) | Cod sursa (job #3256872) | Cod sursa (job #1944830) | Cod sursa (job #1932302)
#include <fstream>
#include <string>
#include <vector>
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
void calcul_prefix()
{
string cuvant;
vector <int>prefix(1000000,0);
f>>cuvant;
int n=cuvant.size();
int i=1,j=0,lmax=0;
for(i=1;i<n;i++)
{
while(cuvant[i]!=cuvant[j]&&j>0)
{
j=prefix[j-1];
}
if(cuvant[i]==cuvant[j])
{
j++;
prefix[i]=j;
}
if(prefix[i]!=0)
if(prefix[i]%(i+1-prefix[i])==0&&(i+1)<=2*prefix[i])
lmax=i+1;
}
}
int main()
{
int t;
f>>t;
for(int i=0;i<t;i++)
calcul_prefix();
f.close();g.close();
}