Pagini recente » Cod sursa (job #1588450) | Cod sursa (job #2343965) | Cod sursa (job #2744106) | Cod sursa (job #2176635) | Cod sursa (job #1205269)
#include <fstream>
#include <bitset>
#define rint register int
#define min(a,b) (((a>b))?(b):(a))
#define max(a,b) (((a>b))?(a):(b))
const char IN [ ] = "curcubeu.in";
const char OUT [ ] = "curcubeu.out";
const int MAX = 1000014;
using namespace std;
int a[MAX],b[MAX],c[MAX],cul[MAX],nxt[MAX],newcol[MAX],nc,n;
bitset < MAX > boolish;
ifstream fin ( IN );
ofstream fout ( OUT );
int main( )
{
fin >> n;nc = n;
fin >> a[1] >> b[1] >> c[1];
for( rint 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( rint i = 1 ; i < n ; ++ i )nxt[i]=i;
for( n-- ; n >= 1 ; --n ){
int st=min( a[n] , b[n] );
int dr=max( a[n] , b[n] );
int cul=c[n];
for( rint i = st ; i <= dr ; ++ i ){
if(boolish[i])
i=nxt[i]-1;
else{
newcol[i]=cul;
boolish[i]=1;
nxt[i]=dr+1;
}
}
}
for( rint i = 1 ; i < nc ; ++ i )
fout<<newcol[i]<<'\n';
return 0;
}