Pagini recente » Cod sursa (job #399468) | Cod sursa (job #2408018) | Cod sursa (job #3159471) | Cod sursa (job #1669783) | Cod sursa (job #1466308)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 1000002
FILE *f = fopen ( "curcubeu.in", "r" );
FILE *g = fopen ( "curcubeu.out", "w" );
int A[Nmax], B[Nmax], C[Nmax], Next[Nmax], sol[Nmax];
int main(){
int N, st, dr;
fscanf ( f, "%d%d%d%d", &N, &A[1], &B[1], &C[1] );
for ( 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;
}
for ( int i = N-1; i > 0; --i ){
st = min ( A[i], B[i] );
dr = max ( A[i], B[i] );
for ( int j = st; j <= dr; ++j ){
while ( Next[j] && j <= dr )
j = Next[j];
if ( j <= dr ){
sol[j] = C[i];
Next[j] = dr+1;
}
}
}
for ( int i = 1; i < N; ++i )
fprintf ( g, "%d\n", sol[i] );
return 0;
}