Pagini recente » Cod sursa (job #2560827) | Cod sursa (job #2545822) | Cod sursa (job #3269833) | Cod sursa (job #34707) | Cod sursa (job #2567699)
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1000005;
ifstream fin( "curcubeu.in" );
ofstream fout( "curcubeu.out" );
int N;
struct mzg {
int L, R;
int c;
} a[NMAX];
int m[NMAX];
int sz[NMAX];
int jump[NMAX];
int color[NMAX];
int Find( int a ) {
int r = a;
while( r != m[r] ) {
r = m[r];
}
while( a != m[a] ) {
int aux = m[a];
m[a] = r;
a = aux;
}
return r;
}
void Union( int a, int b ) { /// Lorenna - Lasa-mi Doamne soacra muta
a = Find( a );
b = Find( b );
if( sz[a] < sz[b] ) swap( a, b );
m[b] = a;
sz[a] += sz[b];
}
void Read() { /// SE CITESTE DATELE
fin >> N >> a[1].L >> a[1].R >> a[1].c;
for( int i = 2; i < N; ++i ) {
a[i].L = ( 1LL * a[i - 1].L * i ) % N;
a[i].R = ( 1LL * a[i - 1].R * i ) % N;
a[i].c = ( 1LL * a[i - 1].c * i ) % N;
}
}
void Do()
{
for( int i = N - 1; i > 0; --i ) {
int lf = a[i].L, rg = a[i].R;
jump[i] = rg;
for( int j = lf; j <= rg; ++j ) {
if( color[j] != 0 ) { j = jump[ color[j] ]; }
color[j] = i;
}
}
for( int i = 1; i < N; ++i )
fout << a[color[i]].c << '\n';
}
int main()
{
Read();
Do();
return 0;
}