Pagini recente » Cod sursa (job #1003247) | Cod sursa (job #2534541) | Rating M. Atihcen (matihcen) | Cod sursa (job #758958) | Cod sursa (job #2104325)
#include <iostream>
#include <fstream>
#define Nmax 1000005
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
long long N, A[Nmax], B[Nmax], C[Nmax], p[Nmax],urm[Nmax];
void un(int nod, int cul)
{
p[nod] = cul;
}
int main()
{
fin >> N >> A[1] >> B[1] >> C[1];
if(A[1] > B[1])swap(A[1], B[1]);
for(int i = 2; i <= N - 1; 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;
if(A[i] > B[i])
swap(A[i], B[i]);
}
for(int i = N - 1; i >= 1; i--)
for(int j = A[i]; j <= B[i]; j++)
if(p[j] == 0)
{
un(j, C[i]);
urm[j] = B[i];
}
else j = urm[j];
for(int i = 1; i <= N - 1; i++)
fout << p[i] << "\n";
return 0;
}