Cod sursa(job #2353091)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 23 februarie 2019 21:05:19
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <bits/stdc++.h>

using namespace std;
int P[1000010];
int main(){
	ifstream cin("prefix.in");
	ofstream cout("prefix.out");
	int t;
	cin>>t;
	while(t--){
		string A;
		int p=0,m=0,ind=-1;
		cin>>A;
		for(int i=1;i<A.size();i++){
			while(A[i]!=A[p] && p){
				p=P[p-1];
			}
			if(A[i]==A[p]){
				p++;
			}
			P[i]=p;
		}
		int s=0;
		for(int i=A.size()-1;i>0;i--)
			if(P[i]>=(i+1)/2 && !(P[i]%(i-P[i]+1))){
				s=i;
			 	break;		
			}
		if(s)cout<<s+1<<'\n';
		else cout<<"0\n";
	}
	return 0;
}