Pagini recente » Cod sursa (job #1095426) | Cod sursa (job #1647188) | Cod sursa (job #1550272) | Cod sursa (job #1909017) | Cod sursa (job #1823148)
#include <bits/stdc++.h>
#define maxN 1000002
using namespace std;
int n, nxt[maxN], f[maxN], ans[maxN];
FILE *fin = freopen("curcubeu.in", "r", stdin);
FILE *fout = freopen("curcubeu.out", "w", stdout);
/*int root(int x)
{
if (f[x] == 0)
return x;
return f[x] = root(f[x]);
}
void Union(int x, int y)
{
int rx = root(x), ry = root(y);
if (rx > ry)
f[ry] = rx;
else if (rx > ry)
f[rx] = ry;
}*/
struct query
{
int a, b, c;
} v[maxN];
void read()
{
scanf("%d %d %d %d", &n, &v[1].a, &v[1].b, &v[1].c);
for (int i = 2; i < n; ++ i)
{
v[i].a = (v[i - 1].a * i) % n;
v[i].b = (v[i - 1].b * i) % n;
v[i].c = (v[i - 1].c * i) % n;
}
}
void solve()
{
int i;
for (i = n - 1; i >= 1; -- i)
{
if (v[i].a > v[i].b)
swap(v[i].a, v[i].b);
int l = v[i].a, r = v[i].b;
while (l <= r)
{
if (ans[l])
l = nxt[ans[l]];
else
{
ans[l] = v[i].c;
nxt[ans[l]] = l + 1;
++ l;
}
}
}
}
void write()
{
for (int i = 1; i < n; ++ i)
printf("%d\n", ans[i]);
}
int main()
{
read();
solve();
write();
return 0;
}