Cod sursa(job #237556)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 30 decembrie 2008 00:53:12
Problema Reguli Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>

FILE *fin=fopen("reguli.in","r"),
    *fout=fopen("reguli.out","w");

int N;
long long a[500005];

int verif(int l){
    int c=N/l,r=N%l;
    for(int i=N-r+1;i<=N;i++)
        if(a[i]!=a[i-N+r])
            return 0;
    for(int i=1;i<=l;i++)
        for(int q=1;q<=c-1;q++)
            if(a[i]!=a[l*q+i])
                return 0;

    return 1;
}

int main(){
    fscanf(fin,"%d",&N);
    long long x,y;

    fscanf(fin,"%lld",&x);
    --N;
    for(int i=1;i<=N;i++){
        fscanf(fin,"%lld",&y);
        a[i]=(long long)y-x;
        x=y;
    }

    for(int l=1;l<=N;l++)
        if(verif(l)){
            fprintf(fout,"%d\n",l);
            for(int i=1;i<=l;i++)
                fprintf(fout,"%lld\n",a[i]);
            break;
        }

    fclose(fin);
    fclose(fout);
    return 0;
}