Pagini recente » Cod sursa (job #219324) | Cod sursa (job #519928) | Cod sursa (job #2862021) | Cod sursa (job #1321533) | Cod sursa (job #1725960)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstdio>
using namespace std;
vector<int> A;
vector<int> B;
vector<int> C;
vector<int> colored;
vector<int> Next;
int N;
int main()
{
freopen("curcubeu.in", "r", stdin);
freopen("curcubeu.out", "w", stdout);
int N, A1, B1, C1;
scanf("%d%d%d%d", &N, &A1, &B1, &C1);
A.resize(N+1);
B.resize(N+1);
C.resize(N+1);
colored.resize(N+1, 0);
Next.resize(N+1);
A[1] = A1; B[1] = B1; C[1]=C1;
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;
}
for (int i = 1; i <= N-1;i++)
Next[i] = i+1;
for (int i = N-1; i >=1; i--)
{
if (A[i] > B[i])
{
int aux = A[i];
A[i] = B[i];
B[i] = aux;
}
for (int j = A[i]; j<=B[i];j++)
{
if (colored[j] != 0)
{
j = Next[j];
j--;
}
else
{
colored[j] = C[i];
Next[j] = B[i]+1;
}
}
}
for (int i = 1; i <= N-1;i++)
printf("%d\n", colored[i]);
return 0;
}