Pagini recente » Cod sursa (job #977286) | Cod sursa (job #2937085) | Cod sursa (job #551167) | Cod sursa (job #109124) | Cod sursa (job #715215)
Cod sursa(job #715215)
#include <fstream>
#define Nmax 1000000+2
#define LL long long
using namespace std;
int A[Nmax],B[Nmax],C[Nmax],Urm[Nmax],Cul[Nmax];
int N;
int main(){
int i,j,jj,aux,lcul;
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
f>>N>>A[1]>>B[1]>>C[1];
Urm[1]=1;
for(i=2;i<N;++i){
A[i]=((LL)A[i-1]*i)%N;
B[i]=((LL)B[i-1]*i)%N;
if( A[i] > B[i] ) aux=A[i],A[i]=B[i],B[i]=aux;
C[i]=((LL)C[i-1]*i)%N;
Urm[i]=i;
}
for(i=N-1;i>=1;--i){
lcul=B[i]+1;
while( Urm[lcul]>lcul ) lcul=Urm[lcul];
for(j=A[i]; j<=B[i]; ++j ){
while( Urm[j]>j )j=Urm[j];
if( j>B[i] ) break;
Cul[j]=C[i];
Urm[j]=lcul;
}
}
for(i=1;i<N;++i) g<<Cul[i]<<'\n';
f.close();
g.close();
return 0;
}