Pagini recente » Cod sursa (job #2875668) | Cod sursa (job #162638) | Cod sursa (job #1688321) | Cod sursa (job #2254891) | Cod sursa (job #29196)
Cod sursa(job #29196)
#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=2;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;
}
}
return 0;
}