Pagini recente » Cod sursa (job #420895) | Cod sursa (job #3199192) | Cod sursa (job #1741929) | Cod sursa (job #2055134) | Cod sursa (job #1341646)
#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;
}