Cod sursa(job #3333457)

Utilizator informatica1210Alexia Petre informatica1210 Data 13 ianuarie 2026 17:01:26
Problema Reguli Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include "bits/stdc++.h"
using namespace std;
ifstream f ("reguli.in");
ofstream g ("reguli.out");
long long x1[500002],a[500002],pp[500002],s[500002];
int main ()
{
    long long 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-1)
           {
                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;
}