Cod sursa(job #1461748)

Utilizator PopoviciRobertPopovici Robert PopoviciRobert Data 16 iulie 2015 13:47:30
Problema Curcubeu Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 1000000
int v[MAXN],a[MAXN],b[MAXN],c[MAXN];
int main(){
    FILE*fi,*fout;
    int i,j,flag,con,n,aux;
    fi=fopen("curcubeu.in" ,"r");
    fout=fopen("curcubeu.out" ,"w");
    fscanf(fi,"%d%d%d%d" ,&n,&a[1],&b[1],&c[1]);
    flag=1;
    if(a[1]>b[1]){
        aux=a[1];
        a[1]=b[1];
        b[1]=aux;
    }
    i=2;
    while(flag){
        for(j=a[i-1];j<=b[i-1];j++)
            v[j]=c[i-1];
        a[i]=(a[i-1]*i)%n;
        b[i]=(b[i-1]*i)%n;
        c[i]=(c[i-1]*i)%n;
        if(a[i]>b[i]){
            aux=a[i];
            a[i]=b[i];
            b[i]=aux;
        }
        j=i-1;
        while(j>=1&&!(a[j]==a[i]&&b[j]==b[i]&&c[i]==c[j]))
            j--;
        if(j>=1)
            flag=0;
        else{
            i++;
            con=0;
            for(j=1;j<n;j++)
                if(v[j]>0)
                    con++;
            if(con==n-1)
                flag=0;
        }
    }
    for(i=1;i<n;i++)
        fprintf(fout,"%d\n" ,v[i]);
    fclose(fi);
    fclose(fout);
    return 0;
}