Pagini recente » Cod sursa (job #1675743) | Cod sursa (job #1712529) | Cod sursa (job #2963460) | Cod sursa (job #1424155) | Cod sursa (job #1454285)
#include <iostream>
#include <fstream>
#include <cstring>
#include <algorithm>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <iterator>
#include <queue>
#include <functional>
#include <utility>
#define MAX 1000005
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int L[MAX], R[MAX], c[MAX], Next[MAX], color[MAX];
int findNext(int i);
int main() {
int n, i, left;
fin >> n >> L[1] >> R[1] >> c[1];
for (i = 2; i < n; ++i) {
L[i] = ((long long)L[i - 1] * i) % n;
R[i] = ((long long)R[i - 1] * i) % n;
c[i] = ((long long)c[i - 1] * i) % n;
if (L[i] > R[i])
swap(L[i], R[i]);
}
for (i = n - 1; i > 0; --i) {
left = findNext(L[i]);
while (left <= R[i]) {
color[left] = c[i];
Next[left] = R[i] + 1;
left = findNext(left + 1);
}
}
for (i = 1; i < n; ++i)
fout << color[i] << '\n';
return 0;
}
int findNext(int i) {
if (Next[i] == 0)
return i;
return Next[i] = findNext(Next[i]);
}