Cod sursa(job #343675)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define LIMIT 1000005
long long 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();
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;
}
for (i=2;i<=N-1;++i)
{
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;
}