Pagini recente » Cod sursa (job #1656851) | Cod sursa (job #2011429) | Cod sursa (job #308925) | Cod sursa (job #170042) | Cod sursa (job #1864133)
#include <fstream>
using namespace std;
ifstream fin ("curcubeu.in");
ofstream fout ("curcubeu.out");
long long n, A[1000010], B[1000010], C[1000010], T[1000010], Next[1000010], Sol[1000010];
int main()
{
fin >> n >> A[1] >> B[1] >> C[1];
for (int i = 2; i < n; i ++)
{
A[i] = (A[i - 1] * i) % n;
B[i] = (B[i - 1] * i) % n;
C[i] = (C[i - 1] * i) % n;
}
for (int i = 1; i < n; i ++)
{
Next[i] = i + 1;
}
for (int i = n - 1; i >= 1; i --)
{
int j1 = A[i];
int j2 = B[i];
if (j1 > j2) j1 ^= j2 ^= j1 ^= j2;
while (j1 <= j2)
{
if (T[j1] > i)
{
j1 = Next[T[j1]];
}
else
{
Sol[j1] = C[i];
T[j1] = i;
Next[i] = j1 + 1;
j1 ++;
}
}
}
for (int i = 1; i < n; i ++) fout << Sol[i] << '\n';
fout.close();
return 0;
}