Pagini recente » Cod sursa (job #2877305) | Cod sursa (job #2223698) | Cod sursa (job #2548031) | Cod sursa (job #2665246) | Cod sursa (job #302196)
Cod sursa(job #302196)
#include<stdio.h>
long long n,x[500005],d[500005],pi[500005],r,c,pmin;
void prefix()
{ long k=0,i;
for(i=2,pi[1]=0;i<=n;i++)
{ while(k>0&&d[k+1]!=d[i])
k=pi[k];
if(d[k+1]==d[i])
k++;
pi[i]=k;
}
}
int main()
{ long long i;
freopen("reguli.in","r",stdin);
freopen("reguli.out","w",stdout);
scanf("%lld",&n);
for(i=1;i<=n;i++)
{ scanf("%lld",&x[i]);
d[i-1]=x[i]-x[i-1];
}
prefix();
for(i=1;i<=n;i++)
{ r=n%i;
c=n/i;
if(pi[n-r]>0&& (n-r)%(n-r-pi[n-r])==0 &&(n-r)/(n-r-pi[n-r])==c)
{ pmin=i;
break;
}
}
printf("%lld\n",pmin);
for(i=1;i<=pmin;i++)
printf("%lld\n",d[i]);
fclose(stdin);
fclose(stdout);
return 0;
}