Cod sursa(job #1653309)

Utilizator valentin50517Vozian Valentin valentin50517 Data 15 martie 2016 20:54:16
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include <bits/stdc++.h>

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

char S[1000100];
int p[1000100];
int T,rs;

int main(){
	ios::sync_with_stdio(0);
	fin.tie(0);
	(fin >> T).ignore(1);
	while(T--){
		fin.getline(S+1,1000100);
		int i,k;
		k = p[1] = 0;
		for(i = 2;S[i];i++){
			while(k && S[k+1] != S[i]) 
				k = p[k];
			if(S[k+1] == S[i]) k++;
			p[i] = k;
		}
		while(--i){
			if(p[i] && p[i]%(i-p[i]) == 0){
				fout << i << '\n';
				break;
			}
		}
		if(!i)fout << 0 << "\n"; 
	}
		
}