Cod sursa(job #343672)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define LIMIT 1000000+5
int N,a,b,c,A[LIMIT],B[LIMIT],C[LIMIT],i,j,MIN,MAX,numere[LIMIT];
int main()
{
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
f>>N>>A[1]>>B[1]>>C[1];
f.close();
/*cout<<"N="<<N<<endl;
cout<<"A1="<<A[1]<<endl;
cout<<"B1="<<B[1]<<endl;
cout<<"C1="<<C[1]<<endl; */
MIN=min(A[1],B[1]);
MAX=max(A[1],B[1]);
for (i=1;i<=N-1;++i)
numere[i]=i;
for (i=MIN+1;i<MAX;++i)
numere[i]=C[1];
for (i=2;i<=N-1;++i)
{
A[i]=(A[i-1]*i)%N;
B[i]=(B[i-1]*i)%N;
C[i]=(C[i-1]*i)%N;
MIN=min(A[i],B[i]);
MAX=max(A[i],B[i]);
for (j=MIN+1;j<MAX;++j)
numere[j]=C[i];
}
for (i=1;i<=N-1;++i)
g<<numere[i]<<endl;
g.close();
return 0;
}