Pagini recente » Cod sursa (job #1822081) | Cod sursa (job #1483055) | Cod sursa (job #1092929) | Cod sursa (job #2557596) | Cod sursa (job #2791801)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f ("prefix.in");
ofstream g ("prefix.out");
int n,l_sir;
char sir[1000001];
int prefixe[1000001];
int formare_prefixe()
{
int i = 0,j = -1;
prefixe[0] = -1;
int rasp = 0;
while(i<l_sir)
{
while(j>=0 && sir[i]!=sir[j])
{
j = prefixe[j];
}
i++;
j++;
prefixe[i] = j;
int sir_din_fata = i - prefixe[i];
if(prefixe[i] !=0 && i%sir_din_fata == 0)
rasp = i;
}
return rasp;
}
int main()
{
f >> n;
f.get();
for(int i = 1;i<=n;i++)
{
f >> sir;
l_sir = strlen(sir);
g << formare_prefixe()<< endl;
}
}