Pagini recente » Cod sursa (job #1401492) | Cod sursa (job #2570480) | Cod sursa (job #1518590) | Cod sursa (job #1521423) | Cod sursa (job #517515)
Cod sursa(job #517515)
#include<stdio.h>
using namespace std;
FILE *in=fopen("reguli.in","r"),*out=fopen("reguli.out","w");
int A[500002],V[500002];
int main()
{
int i,ax,x,N,mic,k=0;
fscanf(in,"%d",&N);
fscanf(in,"%d",&ax);
for(i=1;i<N;++i)
{
fscanf(in,"%d",&x);
A[i]=x-ax;
ax=x;
}
mic=N-1;
for(i=2;i<N;i++)
{
while(A[k+1]!=A[i]&&k)
k=V[k];
if(A[k+1]==A[i])
++k;
V[i]=k;
if(i%(i-k)==0&&k&&(i-k)<mic)
mic=i-k;
}
fprintf(out,"%d\n",mic);
for(i=1;i<=mic;++i)
fprintf(out,"%d\n",A[i]);
fclose(in);
fclose(out);
return 0;
}