Pagini recente » Cod sursa (job #832385) | Cod sursa (job #1536517) | Cod sursa (job #159411) | Cod sursa (job #2687307) | Cod sursa (job #1518184)
#include <bits/stdc++.h>
using namespace std;
int h[4000005];
int l, r, val;
void update(int node, int st, int dr) {
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(h[node]) {
for(int i = st; i <= dr; i ++)
fprintf(g, "%d\n", h[node]);
return ;
}
int m = (dr - st) / 2 + st;
afis(node * 2, st, m);
afis(node * 2 + 1, m + 1, dr);
}
int main()
{
freopen("curcubeu.in", "r", stdin);
int n, a, b, c;
cin >> n >> a >> b >> c;
for(int i = 2; i <= n; i ++) {
l = min(a, b); r = max(a, b); val = c;
update(1, 1, n -1);
a = (a * i) % n;
b = (b * i) % n;
c = (c * i) % n;
}
afis(1, 1, n - 1);
return 0;
}