Cod sursa(job #86874)

Utilizator blasterzMircea Dima blasterz Data 25 septembrie 2007 20:50:44
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#define maxn 1000001

long long a[maxn], b[maxn],c[maxn], next[maxn], color[maxn];
long long A, B, C, N;

int main()
{

  freopen("curcubeu.in","r",stdin);

  scanf("%lld %lld %lld %lld\n", &N, &A, &B, &C);
  
  a[1]=A;
  b[1]=B;
  c[1]=C;
  long long i,j, p, q;
  for(i=2;i<N;++i)
    {
      a[i]=(a[i-1]*i)%N;
      b[i]=(b[i-1]*i)%N;
      c[i]=(c[i-1]*i)%N;
    }


  for(i=N-1;i>=1;--i)
    {
      A=a[i]<?b[i];
      B=b[i]>?a[i];
      C=c[i];
   
      for(j=A;j<=B;)
	{
	  if(!next[j]) { next[j]=B+1; color[j]=C; ++j;}
	  else j=next[j];
	}
    }

  freopen("curcubeu.out","w",stdout);
  for(i=1;i<N;++i)printf("%lld\n", color[i]);
  return 0;
}