Pagini recente » Cod sursa (job #2717766) | Cod sursa (job #2940846) | Cod sursa (job #85974) | Cod sursa (job #2300043) | Cod sursa (job #85372)
Cod sursa(job #85372)
#include <stdio.h>
#define MAX_N 1000100
#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define MIN(a,b) ((a) < (b) ? (a) : (b))
int N, A[MAX_N], B[MAX_N], C[MAX_N], next[MAX_N], cul[MAX_N];
int get_next(int x)
{
int xx = x, aux;
for(; cul[next[x]]; x = next[x]) ;
for(; cul[next[xx]]; aux = xx, xx = next[xx], next[aux] = next[x]) ;
return next[x];
}
void baga(int a, int b, int c)
{
int i;
for(i = get_next(a); i <= b; i = get_next(i+1))
cul[i] = c, next[i] = next[b+1];
}
int main(void)
{
freopen("curcubeu.in", "rt", stdin);
freopen("curcubeu.out", "wt", stdout);
int i, a1, b1, c1;
scanf("%d %d %d %d\n", &N, &a1, &b1, &c1);
for(i = 1; i <= N; i++)
next[i] = i;
for(A[1] = a1, B[1] = b1, C[1] = c1, i = 2; i < N; i++)
A[i] = (int)((long long)A[i-1]*i%N),
B[i] = (int)((long long)B[i-1]*i%N),
C[i] = (int)((long long)C[i-1]*i%N);
for(i = N-1; i >= 1; i--)
baga(MIN(A[i], B[i]), MAX(A[i], B[i]), C[i]);
for(i = 1; i < N; i++)
printf("%d\n", cul[i]);
return 0;
}