Pagini recente » Cod sursa (job #319919) | Cod sursa (job #1620439) | Cod sursa (job #1327417) | Cod sursa (job #65945) | Cod sursa (job #1652880)
#include <iostream>
#include <fstream>
#include <string.h>
#define MAX 1000003
using namespace std;
ifstream in("prefix.in");
ofstream out("prefix.out");
char s[MAX];
int ln;
int maxPref() {
int mx = 0;
int ln2 = 0;
for(int i = 1; i < ln && s[2*i-1]; i++) {
if(s[i] == s[0]/* && s[i-1] == s[2*i-1]*/) {
int crr = 1;
ln2 = i;
for(int j = i; j < ln; j += i) {
if(s[j] == s[0]/* && s[j-1] == s[j+ln2]*/) {
crr++;
} else {
break;
}
}
//cout << i << " " << crr << " " << ln2 << endl;
for(int j = 1; j < ln2; j++) {
for(int k = 1; k < crr; k++) {
if(s[j] != s[j+k*ln2]) {
crr = k;
break;
}
}
if(crr == 0 || crr == 1) {
crr = 0;
break;
}
}
//cout << i << " " << crr << " " << ln2 << endl;
mx = max(crr*ln2, mx);
}
}
return mx;
//cout << '\n';
}
int main() {
int t;
in >> t;
in.getline(s, 100);
for(int i = 0; i < t; i++) {
in.getline(s, MAX);
ln = strlen(s);
out << maxPref() << '\n';
}
return 0;
}