Pagini recente » Cod sursa (job #1924582) | Cod sursa (job #1174153) | Cod sursa (job #2362361) | Cod sursa (job #2447129) | Cod sursa (job #2228495)
#include <cstdio>
#include <algorithm>
using namespace std;
const int Dim = 1000001;
int n,A[Dim],B[Dim],C[Dim],V[Dim],Next[Dim];
void Get(int &x);
int main() {
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
Get(n), Get(A[1]), Get(B[1]), Get(C[1]);
Next[1] = 1;
for ( int i = 2; i < n; ++i) {
A[i] = (1LL * A[i-1] * i) % n;
B[i] = (1LL *B[i-1] * i) % n;
C[i] = (1LL *C[i-1] * i) % n;
Next[i] = i;
}
int i = n - 1,st,dr;
while(i >= 1) {
st = min(A[i],B[i]);
dr = max(A[i],B[i]);
while( st <= dr) {
if ( V[st] )
st = Next[st];
else {
V[st] = C[i];
Next[st] = dr + 1;
}
++st;
}
--i;
}
for ( int i = 1; i < n; ++i)
printf("%d\n", V[i]);
}
const int Lim = 19000000;
int u = Lim - 1;
char buf[Lim];
void Nxt () {
if (++u == Lim)
std::fread(buf, 1, Lim, stdin), u = 0;
}
void Get (int &x) {
x = 0;
for (; buf[u] < '0' || buf[u] > '9'; Nxt());
for (x = 0; buf[u] >= '0' && buf[u] <= '9'; Nxt())
x = x * 10 + buf[u] - '0';
}