Pagini recente » Cod sursa (job #3176305) | Cod sursa (job #942061) | Cod sursa (job #2925706) | Cod sursa (job #1271513) | Cod sursa (job #235683)
Cod sursa(job #235683)
#include<stdio.h>
#define NMAX 100002
int A[NMAX],B[NMAX],C[NMAX],ANS[NMAX],NEXT[NMAX];
inline int min(const int a,const int b)
{
return a<b?a:b;
}
inline int max(const int a,const int b)
{
return a>b?a:b;
}
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
int N;
scanf("%d",&N);
scanf("%d%d%d",&A[N-1],&B[N-1],&C[N-1]);
int i,j=2;
for(i=N-2; i; --i,++j)
{
A[i]=(A[i+1]*j)%N;
B[i]=(B[i+1]*j)%N;
C[i]=(C[i+1]*j)%N;
//printf("%d %d %d\n",A[i],B[i],C[i]);
}
int begin,end;
for(i=1; i<=N-1; ++i)
{
begin=min(A[i],B[i]);
end=max(A[i],B[i]);
for(; begin<=end; ++begin)
{
if( !ANS[ begin ] )
{
ANS[begin]=C[i];
NEXT[begin]=end;
}
else
begin=NEXT[begin];
}
}
for(i=1; i<N; ++i)
printf("%d\n",ANS[i]);
return 0;
}