Cod sursa(job #86036)

Utilizator floringh06Florin Ghesu floringh06 Data 23 septembrie 2007 14:06:29
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Autumn Warmup 2007, Runda 2 Marime 1.13 kb
#include <cstdio>

using namespace std;

#define FIN "curcubeu.in"
#define FOUT "curcubeu.out"
#define MAX_N 5000 



int A[MAX_N];
int B[MAX_N];
int C[MAX_N];
int R[MAX_N];
int N, a, b, c;
int i;

    inline int min (int a, int b) { if (a < b) return a; else return b; }
    inline int max (int a, int b) { if (a < b) return b; else return a; }

    void solve ()
    {
         int i, j, li, lf;
         for ( i = 1; i <= N - 1; ++i)
         {   
             li = min (A[i], B[i]); lf = max (A[i], B[i]);
             for (j = li; j <= lf; ++j) R[j] = C[i];
         }
         for (i = 1; i <= N - 1; ++i)
             printf ("%d\n", R[i]);
    }     

             

    int main ()
    {
        freopen (FIN, "r", stdin);
        freopen (FOUT, "w", stdout);
        
        scanf ("%d %d %d %d", &N, &a, &b, &c); 
        A[1] = a; B[1] = b; C[1] = c;
        
        for ( i = 2; i <= N - 1; ++i)
        {
            A[i] = (A[i - 1] * i) % N;
            B[i] = (B[i - 1] * i) % N;
            C[i] = (C[i - 1] * i) % N;
        } 
        
        solve ();
        return 0;
    }