Pagini recente » Runda 2 preONI 2007 | Cod sursa (job #1125746) | Cod sursa (job #1856852) | Cod sursa (job #2215871) | Cod sursa (job #647988)
Cod sursa(job #647988)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
using namespace std;
#define maxN 1000005
int A[maxN], B[maxN], C[maxN], next[maxN], col[maxN];
int main()
{
freopen ("curcubeu.in", "r", stdin);
freopen ("curcubeu.out", "w", stdout);
int N;
scanf ("%d %d %d %d", &N, &A[1], &B[1], &C[1]);
if (A[1] > B[1]) swap (A[1], B[1]);
next[1] = 1;
for (int i = 2; i < N; ++ i)
{
A[i] = (A[i - 1] * i * 1LL) % N;
B[i] = (B[i - 1] * i * 1LL) % N;
C[i] = (C[i - 1] * i * 1LL) % N;
if (A[i] > B[i]) swap (A[i], B[i]);
next[i] = i;
}
next[N] = N;
int j;
for (int t = N - 1; t >= 1; -- t)
{
for (int i = next[A[t]]; i <= B[t]; i = next[j])
{
for (j = i; j <= B[t] && next[j] == j; ++ j)
col[j] = C[t];
for (int q = i; q <= B[t] && next[q] == q; ++ q)
next[q] = j;
}
}
for (int i = 1; i < N; ++ i) printf ("%d\n", col[i]);
return 0;
}