Pagini recente » Cod sursa (job #2586972) | Cod sursa (job #2963491) | Cod sursa (job #286963) | Cod sursa (job #110004) | Cod sursa (job #85909)
Cod sursa(job #85909)
#include <stdio.h>
#define nmax 1000001
int n, a[nmax], b[nmax], c[nmax], col[nmax], next[nmax];
inline int min(int a,int b)
{
return a > b ? b : a;
}
inline int max(int a,int b)
{
return a > b ? a : b;
}
void comp(int a,int b,int c)
{
if(a == 0) a++;
while(a < b)
{
if(col[a] == -1) {
col[a] = c;
if(col[next[a]] != -1) next[a] = next[next[a]];
a = next[a];
}
if(col[a] == -1) col[a] = c;
}
}
int main()
{
freopen("curcubeu.in", "r", stdin);
freopen("curcubeu.out", "w", stdout);
scanf("%d%d%d%d" , &n, &a[1], &b[1], &c[1]);
for(int i = 2; i < n; i++)
{
a[i] = (a[i - 1] * i) % n;
b[i] = (b[i - 1] * i) % n;
c[i] = (c[i - 1] * i) % n;
}
for(int i = 1; i <= n; i++)
{
next[i] = i + 1;
col[i] = -1;
}
for(int i = n - 1; i >= 1; i--)
{
comp(min(a[i],b[i]), max(a[i],b[i]), c[i]);
}
for(int i = 1; i < n; i++) printf("%d\n", col[i]);
}