Pagini recente » Cod sursa (job #3210237) | Cod sursa (job #1479293) | Cod sursa (job #3316097) | Cod sursa (job #3355360) | Cod sursa (job #3353458)
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1;
int a[N], b[N], c[N], n, v[N];
int parent[N];
int find_parent(int node) {
if (parent[node] == node) return node;
return parent[node] = find_parent(parent[node]);
}
void unite(int x, int y) {
parent[x] = y;
}
int main() {
freopen("curcubeu.in", "r", stdin);
freopen("curcubeu.out", "w", stdout);
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> a[1] >> b[1] >> c[1];
for (int i = 1; i <= n; ++i) parent[i] = i;
for (int i = 2; i < n; ++i) {
a[i] = (a[i - 1] * i) % n;
b[i] = (b[i - 1] * i) % n;
c[i] = (c[i - 1] * i) % n;
}
for (int i = n - 1; i >= 1; --i) {
int l = min(a[i], b[i]), r = max(a[i], b[i]);
l = find_parent(l);
while (l <= r) {
v[l] = c[i];
unite(l, l + 1);
l = find_parent(l);
}
}
for (int i = 1; i < n; ++i) {
cout << v[i] << '\n';
}
return 0;
}