Cod sursa(job #343695)

Utilizator miculprogramatorA Cosmina - vechi miculprogramator Data 26 august 2009 21:25:15
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;

#define LIM 1000005

int N,A[LIM],B[LIM],C[LIM],i,j,nr[LIM],aux[LIM],x,p;
int main()
{
	freopen("curcubeu.in","rt",stdin);
	freopen("curcubeu.out","wt",stdout);
	scanf("%d %d %d %d",&N, &A[1], &B[1], &C[1]);
	for (i=2;i<N;++i)
		{
		A[i]=( (long long) A[i-1]*i)%N;
		B[i]=( (long long) B[i-1]*i)%N;
		C[i]=( (long long) C[i-1]*i)%N;
		if (A[i]>B[i])
			{
			x=A[i];
			A[i]=B[i];
			B[i]=x;
			}
		}
	for(i=1;i<N;++i)
		{
		aux[i]=i+1;
		if(A[i]>B[i])
			{
			A[i]^=B[i];
			B[i]^=A[i];
			A[i]^=B[i];
			}
		}
	for (i=N-1;i;--i)
		{
		p=A[i];
		while (p<=B[i])
			{
			if (nr[p]==0) nr[p]=C[i];
			x=aux[p];
			aux[p]=B[i]+1;
			p=x;
			}
		}
	for (i=1;i<N;++i)
		printf("%d\n", nr[i]);
	return 0;
}