Pagini recente » Cod sursa (job #1722335) | Cod sursa (job #1582870) | Istoria paginii runda/simulare_anti-stres/clasament | Cod sursa (job #2359828) | Cod sursa (job #481257)
Cod sursa(job #481257)
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;
for(i=1;i<=N;i++)
if(a[i]==a[N-i+1]&&ok[i-1]==1)
ok[i]=1;
//cout<<" \n";
int r,c;
for(L=1;L<=N;L++)
{
r=N%L;c=N/L;
if (pi[N-r] > 0 && (N-r) % (N-r-pi[N-r]) == 0 && (N-r) / (N-r-pi[N-r]) == c && ok[r])
{
fout<<L<<"\n";
break;
}
}/*
fout<<N-pi[N]<<"\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;
}