Pagini recente » Cod sursa (job #3329296) | Cod sursa (job #3332084) | Cod sursa (job #3344087) | Cod sursa (job #3342166) | Cod sursa (job #3333453)
#include "bits/stdc++.h"
using namespace std;
ifstream f ("reguli.in");
ofstream g ("reguli.out");
int x1[500002],a[500002],pp[500002],s[500002];
int main ()
{
int n,x,y,stop,stop1,p1,mod;
f>>n;
for (x=0;x<n;x++)
f>>x1[x];
for (x=1;x<=n-1;x++)
{
a[x]=x1[x]-x1[x-1];
}
stop=0;
p1=1013;mod=32983;
s[1]=a[1];
for (x=2;x<=n-1;x++)
{
s[x]=(s[x-1]*p1+a[x]+mod)%mod;
}
pp[0]=1;
for (x=1;x<=n;x++)
pp[x]=(pp[x-1]*p1)%mod;
stop1=0;
for (x=1;x<=n-1 && stop1==0;x++)
{
stop=0;
for (y=1;y<=n-1 && stop==0;y+=x)
{
if (y+x-1<=n)
{
if (s[x]==(s[y+x-1]-(s[y-1]*pp[x])%mod+mod)%mod) ;
else {stop=1;}
}
else
{
if (s[n-y]==(s[n-1]-(s[y-1]*pp[n-y])%mod+mod)%mod) ;
else {stop=1;}
}
}
if (stop==0) {stop1=1;g<<x<<endl;for (y=1;y<=x;y++) g<<a[y]<<endl;}
}
f.close ();
g.close ();
return 0;
}