Pagini recente » Cod sursa (job #3209692) | Cod sursa (job #3187929) | Cod sursa (job #1586889) | Cod sursa (job #2806805) | Cod sursa (job #1652900)
#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 && 2*i-1 < ln; 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+ln2-1] == s[ln2-1]) {
crr++;
} else {
break;
}
}
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;
}
}
if(crr*ln2 > mx)
mx = crr*ln2;
}
}
return mx;
}
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;
}