Pagini recente » Cod sursa (job #1448211) | Cod sursa (job #198380) | Cod sursa (job #2591777) | Cod sursa (job #2435115) | Cod sursa (job #2178653)
#pragma GCC optimize("03")
#include <bits/stdc++.h>
#define ll long long
#define L (pos << 1)
#define R (L | 1)
using namespace std;
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
int n, A, B, C, h[4000100];
void update(int st, int dr, int pos, int l, int r){
if(h[pos] && st != dr)
h[L] = h[R] = h[pos];
if(dr < l || st > r || st > dr)
return;
int mid = st + dr >> 1;
if(l <= st && dr <= r){
h[pos] = C;
if(st != dr)
h[L] = h[R] = C;
return;
}
update(st, mid, L, l, r);
update(mid + 1, dr, R, l, r);
}
void dive(int st, int dr, int pos){
if(h[pos] && st != dr)
h[L] = h[R] = h[pos];
if(st == dr){
out << h[pos] << '\n';
return;
}
int mid = st + dr >> 1;
dive(st, mid, L);
dive(mid + 1, dr, R);
}
int main(){
in >> n >> A >> B >> C;
for(int i = 1; i < n; i++){
if(i > 1){
A = ((ll)A * (ll)i) % n;
B = ((ll)B * (ll)i) % n;
C = ((ll)C * (ll)i) % n;
}
update(1, n - 1, 1, max(1, min(A, B)), max(A, B));
}
dive(1, n - 1, 1);
return 0;
}