Cod sursa(job #1341646)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 12 februarie 2015 22:58:58
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;

#define NMAX 10000002

int v[NMAX];
char sir[NMAX];

void prefix(int n)
{
    int i,q;
    q=0;
    v[1]=0;
    for(i=2;i<=n;i++) {
        while((q)&&(sir[i]!=sir[q+1]))
            q=v[q];
        if(sir[i]==sir[q+1])
            q++;
        v[i]=q;
    }
}

int main ()
{
	int n,i,sol,l;
	ifstream f("perioada2.in");
	ofstream g("perioada2.out");
	f>>n;
	f>>(sir+1);
	f.close();
	prefix(n);
	l=n-v[n];
	sol=1;
	for(l=l+l;l<n;l=l+l)
		if(n%l==0)
			sol++;
	g<<sol;
	g.close();
	return 0;
}