Pagini recente » Cod sursa (job #82419) | Cod sursa (job #491506) | Cod sursa (job #2721) | Cod sursa (job #2152768) | Cod sursa (job #462249)
Cod sursa(job #462249)
#include<stdio.h>
#define Nmax 1000100
long long N,A[Nmax],B[Nmax],C[Nmax],aux;
int v[Nmax],urm[Nmax];
int next(int p)
{
int x=p,y=p,y2;
while(x!=urm[x])
{
x=urm[x];
}
while(y!=urm[y])
{ y2=y;
y=urm[y];//printf("!");
urm[y2]=x;
}
return x;
}
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
scanf("%lld%lld%lld%lld",&N,&A[1],&B[1],&C[1]);
urm[1]=1;
for(int i=2;i<=N;++i)
{
urm[i]=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])
{
aux=A[i];
A[i]=B[i];
B[i]=aux;
}
}
for(int i=N-1;i>=1;--i)
for(int j=next(A[i]);j<=B[i];j=next(j))
{
v[j]=C[i];
urm[j]=next(j+1);
}
for(int i=1;i<N;++i)
printf("%d\n",v[i]);
}