Pagini recente » Cod sursa (job #884885) | Cod sursa (job #1256848) | Cod sursa (job #2954261) | Cod sursa (job #1217495) | Cod sursa (job #2777684)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
const int nmax = 1e6;
int n, A, B, C, ans[nmax + 5], t[nmax + 5];
vector <pair <int, int> > v;
vector <int> nr;
int main()
{
fin >> n >> A >> B >> C;
v.push_back({0, 0});
nr.push_back(0);
v.push_back({A, B});
nr.push_back(C);
t[1] = 1;
for (int i = 2; i < n; ++i) {
A = (A * i) % n;
B = (B * i) % n;
C = (C * i) % n;
v.push_back({A, B});
nr.push_back(C);
t[i] = i;
}
for (int i = n - 1; i >= 1; --i) {
int st = v[i].first, dr = v[i].second, x = nr[i];
if (st > dr) swap(st, dr);
while (st <= dr) {
if (st != t[st]) {
st = t[++st];
continue;
}
ans[st] = x;
t[st] = dr + 1;
if (st + 1 > dr) break;
st = t[++st];
}
}
for (int i = 1; i < n; ++i) fout << ans[i] << '\n';
return 0;
}