Pagini recente » Cod sursa (job #2867507) | Cod sursa (job #1307457) | Cod sursa (job #522604) | Cod sursa (job #2147499) | Cod sursa (job #1788173)
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxN = 1000005;
int A[maxN + 5], B[maxN + 5], C[maxN + 5];
int ans[maxN + 5], v[maxN + 5];
int main() {
freopen("curcubeu.in", "r", stdin);
freopen("curcubeu.out", "w", stdout);
int N;
scanf("%d %d %d %d", &N, &A[1], &B[1], &C[1]);
if(A[1] > B[1])
swap(A[1], B[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;
if(A[i] > B[i])
swap(A[i], B[i]);
}
for(int i = N - 1; i >= 1; -- i) {
for(int j = A[i]; j <= B[i]; ) {
if(!ans[j]) {
ans[j] = C[i];
v[j] = B[i] + 1;
++ j;
} else
j = v[j];
}
}
for(int i = 1; i < N; ++ i)
printf("%d\n", ans[i]);
return 0;
}