Pagini recente » Cod sursa (job #3159154) | Cod sursa (job #22518) | Cod sursa (job #1450717) | Cod sursa (job #1223560) | Cod sursa (job #2059626)
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
const int MAXN = 1000001;
int A[MAXN], B[MAXN], C[MAXN], N;
int v[MAXN], nextu[MAXN];
int main()
{
f >> N >> A[1] >> B[1] >> C[1];
nextu[1] = 2;
for(int 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;
if(A[i] > B[i]) swap(A[i], B[i]);
nextu[i] = i + 1;
}
int aux;
for(int i = N - 1; i > 0; i--)
for(int j = A[i]; j <= B[i]; aux = nextu[j], nextu[j] = B[i] + 1, j = aux)
if(v[j] == 0) v[j] = C[i];
for(int i = 1; i < N; i++)
g << v[i] << '\n';
return 0;
}