Pagini recente » Cod sursa (job #2459461) | Cod sursa (job #1968735) | Cod sursa (job #1061927) | Cod sursa (job #592339) | Cod sursa (job #594334)
Cod sursa(job #594334)
#include <fstream>
using namespace std;
long long c,r,n,i,k,x,xp,a[500001],pr[500001],ook[500001];
int main(void)
{
ifstream f("reguli.in");
ofstream o("reguli.out");
f>>n;
f>>xp;
for (i=1;i<n;i++){f>>x; a[i]=x-xp; xp=x;}
k=0;
pr[1]=0;
for (i=2;i<n;i++)
{
while (k>0 && a[k+1]!=a[i]) k=pr[k];
if (a[k+1]==a[i]) k++;
pr[i]=k;
}
x=pr[n-1];
while (x)
{
ook[x]=1;
x=pr[x];
}
n--;
for (i=1;i<=n;i++)
{
r=n%i;
c=n/i;
x=pr[n-r];
while (x)
{
if (x>0 && (n-r)%(n-r-x)==0 && (n-r)/(n-r-x)==c && ook[r])
{o<<i<<'\n'; for (x=1;x<=i;x++) o<<a[x]<<'\n'; break;}
x=pr[x];
}
}
if (i>n)
{
o<<n<<'\n';
for (i=1;i<=n;i++) o<<a[i]<<'\n';
}
return 0;
}