Pagini recente » Cod sursa (job #1028260) | Cod sursa (job #2587185) | Cod sursa (job #1942055) | Cod sursa (job #922010) | Cod sursa (job #605519)
Cod sursa(job #605519)
#include <stdio.h>
#include <algorithm>
#define NMax 1000010
using namespace std;
const char IN[]="curcubeu.in",OUT[]="curcubeu.out";
int N,A[NMax] ,B[NMax] ,C[NMax];
int Sol[NMax] , p[NMax];
inline void next(int 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;
}
inline int find(int x)
{
int y;
for (y=x;p[y]!=y;y=p[y]);
for ( ;p[x]!=x;x=p[x]) p[x]=y;
return y;
}
void fill(int x,int y,int c)
{
int i;
for (i=find(x);i<=y;i=find(i+1))
Sol[i]=c,p[i]=y+1;
}
int main()
{
int i;
freopen(IN,"r",stdin);
scanf("%d%d%d%d",&N,&A[1],&B[1],&C[1]);
fclose(stdin);
for (i=1;i<N;++i)
next(i+1);
for (i=0;i<=N+2;++i) p[i]=i;
for (i=N-1;i>0;--i)
{
//printf("%d\n",i);
fill(min(A[i],B[i]),max(A[i],B[i]),C[i]);
}
freopen(OUT,"w",stdout);
for (i=1;i<N;++i) printf("%d\n",Sol[i]);
fclose(stdout);
return 0;
}