Pagini recente » Cod sursa (job #2998877) | Cod sursa (job #1456163) | Cod sursa (job #3268265) | Cod sursa (job #1425661) | Cod sursa (job #1677133)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
#include <functional>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <stack>
#define NMAX 1000005
#define MOD 666013
#define INF 0x3f3f3f3f
#define pb push_back
using namespace std;
typedef pair<int, int> pii;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
char a[NMAX];
int pref[NMAX], n;
inline void prefix() {
int i,j=0;
for(i=2;i<=n;++i) {
while(j>0 && a[j+1] != a[i])
j=pref[j];
if(a[j+1]==a[i]) ++j;
pref[i]=j;
}
}
int main() {
int i,lgpref,t;
fin>>t;
while(t--) {
fin>>(a+1);
n=strlen(a+1);
prefix();
i=n;
lgpref=0;
while(i) {
if(pref[i] != 0 && pref[i]%(i-pref[i]) == 0) {
lgpref=i;
break;
}
--i;
}
fout<<lgpref<<'\n';
}
return 0;
}