Cod sursa(job #176306)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 10 aprilie 2008 23:44:27
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>

int n, a, b, c, m[1000002], nr, x[1000002];

typedef struct
{
	int a, b, c;
} culoare;
culoare v[1000002];

int main()
{
	freopen("curcubeu.in","r",stdin);
	freopen("curcubeu.out","w",stdout);
	scanf("%d",&n);
	scanf("%d%d%d",&v[1].a,&v[1].b,&v[1].c);
	int i, j;
	nr = n - 1; m[1] = 1;
	for (i = 2; i < n; i++)
	{
		v[i].a = (v[i - 1].a * i) % n;
		v[i].b = (v[i - 1].b * i) % n;
		v[i].c = (v[i - 1].c * i) % n;
		m[i] = i;
	}

	for (i = n - 1; i >= 1; i--)
	{
		for (j = v[i].a; j <= v[i].b; j++)
		{
			while (m[ v[i].a ] != v[i].a) { i = m[v[i].a]; j = v[i].a; }
			if (j <= v[i].b) { x[j] = v[i].c; m[j] = m[ v[i].b ] + 1; nr--; }
		}
		if (nr <= 0) break;
	}

	for (i = 1; i < n; i++) printf("%d\n",x[i]);
	return 0;
}