Cod sursa(job #235647)

Utilizator katakunaCazacu Alexandru katakuna Data 24 decembrie 2008 20:47:07
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<stdio.h>

int urm[1000011],a[1000011],b[1000011],c[1000011],cul[1000011];
int n,i,j,x;

int main(){

FILE *f=fopen("curcubeu.in","r");
fscanf(f,"%d %d %d %d",&n,&a[1],&b[1],&c[1]);
fclose(f);

urm[1]=2;

  for(i=2;i<n;i++){
  urm[i]=i+1;
  a[i]=(long long)((long long)a[i-1] * (long long)i)%(long long)n;
  b[i]=(long long)((long long)b[i-1] * (long long)i)%(long long)n;
  c[i]=(long long)((long long)c[i-1] * (long long)i)%(long long)n;

     if(a[i] > b[i]){
     x=b[i];
     b[i]=a[i];
     a[i]=x;
     }

  }

FILE *g=fopen("curcubeu.out","w");

  for(i=n-1;i;i--){
     for(j=a[i];j<=b[i];){
        if(!cul[j]){
        cul[j]=c[i];
        }
        
     x=urm[j];
     urm[j]=b[i]+1;
     j=x;
     }
  }

  for(i=1;i<n;i++)
  fprintf(g,"%d\n",cul[i]);

fclose(g);

return 0;
}