Cod sursa(job #176311)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 10 aprilie 2008 23:59:06
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>

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

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

inline int min(int x, int y) { return x < y ? x : y;}
inline int max(int x, int y) { return x > y ? x : y;}

int main()
{
	freopen("curcubeu.in","r",stdin);
	freopen("curcubeu.out","w",stdout);
	scanf("%ld",&n);
	scanf("%ld %ld %ld",&v[1].a, &v[1].b, &v[1].c);
	int i, j, xx, yy;
	nr = n - 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;

	}

	for (i = n - 1; i >= 1; i--)
	{
		xx = min(v[i].a, v[i].b);
		yy = max(v[i].a, v[i].b);
        if (yy)
			for (j = xx; j <= yy; j++)
			{
				if (!x[j]) { x[j] = v[i].c; nr--;}
				if (!nr) break;
			}
		if (!nr) break;
	}

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