Pagini recente » Cod sursa (job #423583) | Cod sursa (job #863534) | Cod sursa (job #315370) | Cod sursa (job #1447420) | Cod sursa (job #3142131)
#include <fstream>
using namespace std;
ifstream fin ("curcubeu.in");
ofstream fout ("curcubeu.out");
const int NMAX = 1e6;
int v[NMAX + 5], a[NMAX + 5], b[NMAX + 5], c[NMAX + 5], n;
int color[NMAX + 5], nextOne[NMAX + 5];
void precalc_query()
{
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++)
if(a[i] > b[i])
swap(a[i], b[i]);
}
int main()
{
fin >> n >> a[1] >> b[1] >> c[1];
precalc_query();
for(int i = 1; i <= n - 1; i++)
nextOne[i] = -1;
for(int i = n - 1; i >= 1; i--)
for(int j = a[i]; j <= b[i]; j++)
if(nextOne[j] != -1)
j = nextOne[j];
else
{
nextOne[j] = b[i];
color[j] = c[i];
}
for(int i = 1; i <= n - 1; i++)
fout << color[i] << '\n';
fin.close();
fout.close();
return 0;
}