Pagini recente » Cod sursa (job #3300085) | Cod sursa (job #2329564) | Cod sursa (job #2957447) | Cod sursa (job #384515) | Cod sursa (job #3316469)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int N, A1, B1, C1;
fin >> N >> A1 >> B1 >> C1;
int M = N - 1;
vector<int> A(M + 1), B(M + 1), C(M + 1);
vector<int> culori(N, 0); // index de la 1 la N-1
A[1] = A1;
B[1] = B1;
C[1] = C1;
// Generam toate operatiile
for (int i = 2; i <= M; ++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;
}
// Aplicam operatiile in ordine inversa
for (int i = M; i >= 1; --i) {
int st = min(A[i], B[i]);
int dr = max(A[i], B[i]);
for (int j = st; j <= dr; ++j) {
if (culori[j] == 0) {
culori[j] = C[i];
}
}
}
// Afisam culorile finale ale casutelor de la 1 la N-1
for (int i = 1; i < N; ++i) {
fout << culori[i] << '\n';
}
return 0;
}