Cod sursa(job #728500)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 28 martie 2012 19:22:19
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<algorithm>
#define ll long long 
#define dim 1000007

using namespace std;
long long A[dim],B[dim],C[dim],N,i,j,T[dim],t,a,b,sol[dim];

void calculate () {
	
	for(int i=2; i<N ; ++i ){
		
		A[i]= (ll) (A[i-1]*i )%N; 
		B[i]= (ll) (B[i-1]*i )%N; 
		C[i]= (ll) (C[i-1]*i )%N; 
	}
	
	for(int i=1; i<=N ;++i)
		T[i]=-1;
	
}
int  tata(int x) {
	int y , r ; 
	y=r=x ;
	while( T[r]>0) 
		
		r=T[r];
	
	while( y != r   ){ 
		
		t=T[y];
		T[y]=r;
		y=t;
		
	}
	
	return r;
}
void solve () {
	
	for(int i=1 ; i<N ; ++i ) {
		a=A[i];
		b=B[i];
		if( a > b)
			swap( a , b );
		
		for(int j=tata(a) ; j<=b ; j=tata(j+1)){
			
			sol[j]=C[i];
			
		}
	}		
	
	for(int  i=1 ; i<N ; ++i )
		printf("%lld\n",sol[i]);
}
int main (){
	freopen("curcubeu.in","r",stdin);
	freopen("curcubeu.out","w",stdout);
	
	scanf("%d%d%d%d",&N  , &A[i], &B[1], &C[1]);
	
	calculate();
	
	solve(); 
	
	return 0;
}