Pagini recente » Cod sursa (job #273331) | Cod sursa (job #902542) | Cod sursa (job #1344167) | Cod sursa (job #2943075) | Cod sursa (job #157705)
Cod sursa(job #157705)
#include<cstdio>
int a[500001],n,pi[500001],x,y,i,k,j,c;
int main()
{
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%d %d",&n,&y);
n--;
for(i=1;i<=n;i++){
x=y;
scanf("%d",&y);
a[i]=y-x;}
k=0;
pi[1]=0;
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;}
for(i=1;i<n;i++){
j=n%i;
c=n/i;
if(pi[n-j]>0 && (n-j)%(n-j-pi[n-j])==0 && c==(n-j)/(n-j-pi[n-j])){
for(k=n-j+1;k<=n;k++)
if(a[k]!=a[k-n+j]) break;
if(k>n) break;}}
printf("%d\n",i);
for(k=1;k<=i;k++)
printf("%d\n",a[k]);
fclose(stdout);
return 0;
}