Pagini recente » Cod sursa (job #999247) | Cod sursa (job #1078627) | Cod sursa (job #377412) | Cod sursa (job #1984514) | Cod sursa (job #802112)
Cod sursa(job #802112)
/*
PROB: curcubeu
LANG: C++
*/
#include <fstream>
#include <iostream>
#include <cstdio>
//#define DEBUG
#ifndef DEBUG
#define PRINT(x)
#define D if(0)
#else
#define PRINT(x) \
cout<<#x<<":\t"<<x<<endl
#define D if(1)
#endif
using namespace std;
const char InFile[]="curcubeu.in";
const char OutFile[]="curcubeu.out";
const int MaxN=1000001;
ifstream fin(InFile);
FILE *fout=fopen(OutFile,"w");
int N,A[MaxN],B[MaxN],C[MaxN],SOL[MaxN],T[MaxN];
int main()
{
fin>>N>>A[1]>>B[1]>>C[1];
if(A[1]>B[1])
{
int aux=A[1];
A[1]=B[1];
B[1]=aux;
}
for(register int 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])
{
int aux=A[i];
A[i]=B[i];
B[i]=aux;
}
}
fin.close();
for(register int i=N-1;i>=1;--i)
{
int index=A[i];
while(index<=B[i])
{
if(SOL[index])
{
index=T[index];
}
else
{
SOL[index]=C[i];
T[index]=B[i]+1;
++index;
}
}
}
for(register int i=1;i<N;++i)
{
fprintf(fout,"%d\n",SOL[i]);
}
fclose(fout);
return 0;
}