Pagini recente » Cod sursa (job #969511) | Cod sursa (job #1242819) | Cod sursa (job #232462) | Cod sursa (job #2251710) | Cod sursa (job #481274)
Cod sursa(job #481274)
using namespace std;
#include<iostream>
#include<fstream>
ofstream fout("reguli.out");
long long pi[500005],a[500005],N,ok[500005];
void solve()
{
int i,k=0,L;
pi[1]=0;
N--;
for(i=2;i<=N;i++)
{
while(k>0&&a[k+1]!=a[i])
k=pi[k];
if(a[k+1]==a[i]) k++;
pi[i]=k;
//cout<<pi[i]<<" ";
}
ok[0]=1;
int r,c;
for (r = N; r; r = pi[r])
ok[pi[r]] = 1;
//cout<<" \n";
int sol=0;
for(L=1;L<=N;L++)
{
r=N%L;c=N/L;
if( ((N-r)%(N-r-pi[N-r])==0)////////////////////////////////////////////facultativ
&& ok[r]
&&pi[N-r]>0 ////////////////////////////////////////////////////////facultativ
&& ((N-r)/(N-r-pi[N-r])==c))
{ sol=1;
fout<<L<<"\n";
break;
}
}
if(L==N+1)
{
L--;
fout<<L<<"\n";
}
for(i=1;i<=L;i++)
fout<<a[i]<<"\n";
//cout<<"\ok";*/
}
void cit()
{int i;
long long x,y;
ifstream fin("reguli.in");
fin>>N;
fin>>x;
for(i=1;i<=N-1;i++)
{
fin>>y;
a[i]=y-x;
x=y;
//cout<<a[i]<<" ";
}
fin.close();
}
int main()
{
cit();
//cout<<"\n";
solve();
fout.close();
return 0;
}