Pagini recente » Cod sursa (job #1915856) | Cod sursa (job #439812) | Cod sursa (job #2090192) | Cod sursa (job #787764) | Cod sursa (job #460053)
Cod sursa(job #460053)
#include <stdio.h>
#define Nmax 1<<20
int a[Nmax], b[Nmax], c[Nmax], next[Nmax], col[Nmax], n;
int nextX(int poz) {
if (next[poz] == poz)
return poz;
return next[poz] = nextX(next[poz]);
}
int main() {
fscanf(fopen("curcubeu.in","r"), "%d%d%d%d", &n, a+1, b+1, c+1);
int i, j;
next[1] = 1;
for (i = 2; i <= n; ++i) {
a[i] = (long long)((long long)i*a[i-1])%n;
b[i] = (long long)((long long)i*b[i-1])%n;
if (a[i] > b[i]) {
c[i] = a[i];
a[i] = b[i];
b[i] = c[i];
}
c[i] = (long long)((long long)i*c[i-1])%n;
next[i] = i;
}
for ( i = n; i > 0; --i)
for ( j = nextX(a[i]); j <= b[i]; j = nextX(j))
col[j] = c[i],
next[j] = nextX(j+1);
freopen("curcubeu.out", "w", stdout);
for (i = 1; i < n; ++i)
printf("%d\n", col[i]);
return 0;
}