Pagini recente » Cod sursa (job #875561) | Cod sursa (job #1340657) | Cod sursa (job #570859) | Cod sursa (job #1697012) | Cod sursa (job #3348209)
#include <fstream>
#include <iostream>
using namespace std;
struct operatie
{
int st, dr, val;
};
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
int N, a, b, c;
int n;
operatie op[1000005];
int tata[1000005];
int cul[1000005];
int rad(int x)
{
if(x == tata[x])
{
return x;
}
int r = rad(tata[x]);
tata[x] = r;
return r;
}
int main()
{
in>>N>>a>>b>>c;
n = N - 1;
for(int i = 1; i<=n; i++)
{
a = (1LL * a * i) % N;
b = (1LL * b * i) % N;
c = (1LL * c * i) % N;
op[i] = {min(a, b), max(a, b), c};
}
for(int i = 1; i<=n + 1; i++)
{
tata[i] = i;
cul[i] = 0;
}
for(int i = n; i>=1; i--)
{
int poz = rad(op[i].st);
while(poz <= op[i].dr)
{
cul[poz] = op[i].val;
tata[poz] = poz + 1;
poz = rad(poz);
}
}
for(int i = 1; i<=n; i++)
{
out<<cul[i]<<'\n';
}
return 0;
}