Pagini recente » Cod sursa (job #2859318) | Cod sursa (job #473062) | Cod sursa (job #1096590) | Cod sursa (job #494955) | Cod sursa (job #648570)
Cod sursa(job #648570)
#include <cstdio>
#include <algorithm>
using namespace std;
#define maxN 1000002
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])
{
int aux = A[1];
A[1] = B[1];
B[1] = aux;
}
for (int i = 2; i < N; ++ i)
{
A[i] = (A[i - 1] * 1LL * i) % N;
B[i] = (B[i - 1] * 1LL * i) % N;
C[i] = (C[i - 1] * 1LL * i) % N;
if (A[i] > B[i])
{
int aux = A[i];
A[i] = B[i];
B[i] = aux;
}
}
for (int t = N - 1; t > 0; -- t)
for (int i = A[t]; i <= B[t]; )
if (col[i]) i = next[col[i]] + 1;
else
{
col[i] = C[t];
next[col[i]] = i;
++ i;
}
for (int i = 1; i < N; ++ i) printf ("%d\n", col[i]);
return 0;
}