Pagini recente » Cod sursa (job #301283) | Cod sursa (job #366297) | Cod sursa (job #1901392) | Cod sursa (job #1346701) | Cod sursa (job #982373)
Cod sursa(job #982373)
#include <cstdio>
#define SIZE 500001
using namespace std;
int n, i, j, pi[SIZE], pz, nr;
long long first, last, a[SIZE];
int main()
{
freopen("reguli.in", "r", stdin);
freopen("reguli.out", "w", stdout);
scanf("%d%lld", &n, &first);
for(i=2;i<=n;++i)
{
scanf("%lld", &last);
a[i-1]=last-first;
first=last;
}
n--;
j=0;
for(i=2;i<=n;++i)
{
while(j>0 && a[j+1]!=a[i])
j=pi[j];
if(a[j+1]==a[i])
++j;
pi[i]=j;
}
for(i=1;i<=n;++i)
if(pi[i]>0 && pi[i]%(i-pi[i])==0)
{
nr=pi[i];
pz=i;
i-=pi[i];
break;
}
printf("%d\n", nr);
while(i<pz)
printf("%lld\n", a[++i]);
return 0;
}