Pagini recente » Cod sursa (job #1110802) | Cod sursa (job #1830036) | Cod sursa (job #2317681) | Cod sursa (job #69517) | Cod sursa (job #29198)
Cod sursa(job #29198)
#include<stdio.h>
#define nmax 500001
long long d[nmax],n,Urm[nmax];
void Urmatorul()
{long long k=0,x;
Urm[1]=0;
for(x=2;x<=n;x++)
{while(k>0&&d[k+1]!=d[x]) k=Urm[k];
if(d[k+1]==d[x]) k++;
Urm[x]=k;
}
}
int main()
{long long i,x,x1=0,l,r,c;
freopen("reguli.in","r",stdin);
scanf("%lld",&n);
scanf("%lld",&x1);
for(i=1;i<=n;i++)
{scanf("%lld",&x);
d[i]=x-x1;
x1=x;
}
Urmatorul();
for(l=1;l<=n;l++)
{c=n/l;
r=n%l;
if(Urm[n-r]>0&&!((n-r)%(n-r-Urm[n-r]))&&(n-r)/(n-r-Urm[n-r])==c)
{freopen("reguli.out","w",stdout);
printf("%lld\n",l);
for(i=1;i<=l;i++)
printf("%lld\n",d[i]);
fclose(stdout);
return 0;
}
}
freopen("reguli.out","w",stdout);
printf("%lld\n",n-1);
for(i=1;i<=n-1;i++)
printf("%lld\n",d[i]);
fclose(stdout);
return 0;
}