Pagini recente » Cod sursa (job #1764538) | Istoria paginii runda/bulangandit3/clasament | Istoria paginii runda/selectie_emag_mediu_2016_runda2/clasament | Cod sursa (job #2278730) | Cod sursa (job #2480917)
#include<fstream>
#include<string.h>
#define NMAX 1000000
using namespace std;
int calculate (char sir[])
{
char testchar[NMAX];
int len,lt,max=0,pos, val;
bool done=false, repeats;
len=strlen(sir);
for (int i=1;i<len;i++)
if (sir[i]==sir[0]) {
for (int j=0;j<=i;j++) {
if (j<i) testchar[j]=sir[j];
else testchar[j]=NULL;
lt=j;
}
repeats=true; val=0;
for (int j=1;j*lt<len && repeats==true;j++)
{
for (int k=0;k<lt;k++) {
if (testchar[k]!=sir[(j*lt)+k]) {
repeats=false; break;
}
}
if(repeats){ done=true;
val=j*lt+lt;
}
}
if (val>max) max=val;
}
if (!done) return 0;
else return max;
}
int main()
{
char sir[NMAX];
int t,temp;
ifstream in ("prefix.in");
ofstream out ("prefix.out");
in>>t;
in.getline(sir, NMAX, '\n');
for (int i=0;i<t;i++)
{
in.getline(sir, NMAX, '\n');
temp=calculate(sir);
out<<temp<<endl;
}
in.close();
out.close();
return 0;
}