Cod sursa(job #1977626)

Utilizator brczBereczki Norbert Cristian brcz Data 5 mai 2017 17:45:57
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
// #include<bits/stdc++.h>
#include<fstream>
#define ll long long
#define pii pair<int,int>
#define pll pair<ll,ll>
#define fi first
#define se second
#define sz size
#define pb push_back
#define mp make_pair
#define bg begin
#define nd end
using namespace std;

#define int long long

	ifstream fin("prefix.in");
	ofstream fout("prefix.out");

const int maxn = 2000003;
const int maxk = 1003;

int pref[maxn];

void solveKMP(){


	string s,skmp = "0";

	fin >> s;

	skmp += s;
	int n = skmp.sz();
	int ans = 0;
	int q=0;
	pref[1] = 0;
	for(int i=2;i<=n;i++){

		while(q && skmp[q+1]!=skmp[i]){
			q = pref[q];
		}
		if(skmp[q+1] == skmp[i]) q++;
		pref[i] = q;

		
	}
	for(int i=n;i>=0;i--){
		if((pref[i] && i%(i-pref[i]) == 0) || i == 0){
			fout << i << '\n';
			break;
		}
	}

}

int32_t main(){

	// #ifndef ONLINE_JUDGE
	// freopen("prefix.in","r",stdin);
	// freopen("prefix.out","w",stdout);
	// #endif


	ios_base::sync_with_stdio(0);
	int t;
	fin >> t;
	for(int i=0;i<t;i++){
		solveKMP();
	}


	return 0;
}