Pagini recente » Cod sursa (job #1321971) | Cod sursa (job #2757847) | Cod sursa (job #556712) | Cod sursa (job #1328070) | Cod sursa (job #1466305)
#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] );
Next[1] = 1;
for ( int i = 2; i < N; ++i ){
A[i] = ( (A[i-1]%N) * (i%N) ) % N;
B[i] = ( (B[i-1]%N) * (i%N) ) % N;
C[i] = ( (C[i-1]%N) * (i%N) ) % N;
}
for ( int i = N-1; i >= 1; --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;
}