Pagini recente » Cod sursa (job #475645) | Cod sursa (job #3134923) | Cod sursa (job #1095211) | Cod sursa (job #254335) | Cod sursa (job #1503378)
#define _CRT_SECURE_NO_DEPRECATE
#include <cstdio>
#include <cassert>
#include <cstring>
#include <ctime>
using namespace std;
#define MAXN 1000002
int N, A[MAXN], B[MAXN], C[MAXN], ans[MAXN], next[MAXN];
inline void w_int32(int &k, char end) {
char lim[16], *s;
s = lim + 15, *s = 0, *--s = end;
do {
*--s = k % 10 + '0';
k /= 10;
} while (k);
fputs(s, stdout);
}
int main()
{
assert(freopen("curcubeu.in", "r", stdin));
freopen("curcubeu.out", "w", stdout);
scanf("%d%d%d%d", &N, &A, &B, &C);
for (unsigned long long i = 1; i < N; ++i)
A[i] = (A[i - 1] * i) % N,
B[i] = (B[i - 1] * i) % N,
C[i] = (C[i - 1] * i) % N;
next[N] = N;
for (int i = N - 1; i; --i) {
//assert(C[i]);
int l = A[i], r = B[i], aux, last, root;
if (l > r) l ^= r ^= l ^= r;
while (l <= r)
if (next[ans[l]]) l = next[ans[l]];
else {
ans[l] = C[i];
next[C[i]] = r + 1;
++l;
}
}
//for (int i = 1; i < N; ++i) w_int32(ans[i], '\n');
for (int i = 1; i < N; ++i) printf("%d\n", ans[i]);
//fprintf(stderr, "%.2lf\n", (float)clock() / CLOCKS_PER_SEC);
return 0;
}