Pagini recente » Cod sursa (job #1438386) | Cod sursa (job #2035653) | Cod sursa (job #2808022) | Cod sursa (job #371240) | Cod sursa (job #419570)
Cod sursa(job #419570)
#include <cstdio>
FILE* fin=fopen("curcubeu.in","r");
FILE* fout=fopen("curcubeu.out","w");
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))
#define NMAX 1000005
typedef long long int64;
int A[NMAX],B[NMAX],C[NMAX],next[NMAX],col[NMAX],n;
int main(){
fscanf(fin,"%d %d %d %d",&n,&A[0],&B[0],&C[0]);
int aux;
for(int i=1;i<=n;i++){
A[i]=((int64)A[i-1]*i)%n;
B[i]=((int64)B[i-1]*i)%n;
C[i]=((int64)C[i-1]*i)%n;
next[i]=i+1;
col[i]=-1;
if(A[i]>B[i]){
aux=B[i];B[i]=A[i];A[i]=aux;
}
}
for(int i=n-1;i>=1;i--){
for(int j=A[i];j<=B[i];){
if(col[j]==-1){
col[j]=C[i];
}
int jmp=j;
j=next[j];
next[jmp]=B[i]+1;
}
}
for(int i=1;i<=n-1;i++){
fprintf(fout,"%d\n",col[i]);
}
fclose(fin);
fclose(fout);
return 0;
}