Cod sursa(job #2316324)

Utilizator shantih1Alex S Hill shantih1 Data 11 ianuarie 2019 16:26:39
Problema Curcubeu Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#define nmx 1000001

using namespace std;

int n;
int r[nmx],t[nmx],A[nmx],B[nmx],C[nmx];

int main() {
	
	freopen("curcubeu.in", "r",stdin);
	freopen("curcubeu.out", "w",stdout);
	scanf("%d%d%d%d",&n,&A[1],&B[1],&C[1]);
	
	int i,j,k,x,b;
	if(A[1]>B[1])
	{	A[1]^=B[1];	B[1]^=A[1];	A[1]^=B[1];	}
	
	t[1]=2;
	for(i=2;i<n;++i)
	{
		A[i]=(1LL*A[i-1]*i)%n;
		B[i]=(1LL*B[i-1]*i)%n;
		C[i]=(1LL*C[i-1]*i)%n;
		
		if(A[i]>B[i])
		{	A[i]^=B[i];	B[i]^=A[i];	A[i]^=B[i];	}
		t[i]=i+1;
	}
	
	for(i=n-1;i;--i)
	{
		b=B[i];
		k=t[b];
		for(j=A[i];j<=b; x=j, j=t[j], t[x]=k)
			if(!r[j])	r[j]=C[i];
	}
	for(i=1;i<n;i++)
		printf("%d\n", r[i]);
	/*
	Somnoroase păsărele
	Pe la cuiburi se adună,
	Se ascund în rămurele -
	Noapte bună! 
	
	Doar izvoarele suspină, 
	Pe când codrul negru tace;
	Dorm şi florile-n grădină -
	Dormi în pace!
	
	Trece lebăda pe ape
	Între trestii să se culce -
	Fie-ţi îngerii aproape, 
	Somnul dulce! 
	
	Peste-a nopţii feerie
	Se ridică mândra lună, 
	Totu-i vis şi armonie -
	Noapte bună!
	*/
}