Pagini recente » Cod sursa (job #656481) | Cod sursa (job #1549110) | Monitorul de evaluare | Cod sursa (job #1337767) | Cod sursa (job #1748860)
#include<stdio.h>
FILE *in, *out;
struct pictam
{
int st, dr, hue;
};
struct pictam colo[1000000];
int nxgol[1000001], n;
void initializ(int n, int a, int b, int c)
{
int i, aux;
for(i = 1; i <= n-1; i++) {
nxgol[i] = i;
}
i = 1;
do {
if(a > b) {
aux = b;
b = a;
a = aux;
}
colo[i].st = a;
colo[i].dr = b;
colo[i].hue = c;
i++;
a = (a * i) % n;
b = (b * i) % n;
c = (c * i) % n;
} while(i < n);
/*
for(i = 1; i < n; i++) {
printf("%d %d %d\n", colo[i].st, colo[i].dr, colo[i].hue);
}
*/
}
int cap(int x)
{
if(nxgol[x] != x) {
nxgol[x] = cap(nxgol[x]);
}
return x;
}
int pictu[1000001];
int main ()
{
int a, b, c, i, j;
in = fopen("curcubeu.in", "r");
out = fopen("curcubeu.out", "w");
fscanf(in, "%d%d%d%d", &n, &a, &b, &c);
initializ(n, a, b, c);
for(i = n - 1; i >= 1; i--) {
j = colo[i].st;
while(j <= colo[i].dr) {
if(nxgol[j] == j) {
nxgol[j] = cap(colo[i].dr);
if(pictu[j] == 0) {
pictu[j] = colo[i].hue;
}
j++;
} else {
j = cap(nxgol[j]);
}
}
}
for(i = 1; i < n; i++) {
fprintf(out, "%d\n", pictu[i]);
}
fclose(in);
fclose(out);
return 0;
}