Pagini recente » Cod sursa (job #1159438) | Cod sursa (job #1248163) | Cod sursa (job #2038075) | Cod sursa (job #2358881) | Cod sursa (job #1518196)
#include <bits/stdc++.h>
using namespace std;
int h[4000005];
int l, r, val;
int lim;
void update(int node, int st, int dr) {
if(node >= lim)
return ;
if(l <= st && dr <= r) {
h[node] = val;
return ;
}
int m = (dr - st) / 2 + st;
if(h[node])
h[(node << 1) + 1] = h[node << 1] = h[node], h[node] = 0;
if(l <= m) update(node << 1, st, m);
if(r > m) update((node << 1) + 1, m + 1, dr);
}
FILE *g = fopen("curcubeu.out", "w");
void afis(int node, int st, int dr) {
if(node >= lim)
return ;
if(h[node]) {
for(int i = st; i <= dr; i ++)
fprintf(g, "%d\n", h[node]);
return ;
}
int m = (dr - st) / 2 + st;
afis(node << 1, st, m);
afis((node << 1) + 1, m + 1, dr);
}
int main()
{
freopen("curcubeu.in", "r", stdin);
int n, a, b;
cin >> n >> a >> b >> val;
lim = n << 1;
for(int i = 2; i <= n; i ++) {
l = min(a, b); r = max(a, b);
update(1, 1, n -1);
a = (a * i) % n;
b = (b * i) % n;
val = (val * i) % n;
}
afis(1, 1, n - 1);
return 0;
}