Pagini recente » Cod sursa (job #58845) | Cod sursa (job #2751770) | Cod sursa (job #2938126) | Cod sursa (job #397676) | Cod sursa (job #2376386)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream in("curcubeu.in");
ofstream out("curcubeu.out");
struct punct
{
int minim;
int maxim;
int k;
};
int main()
{
int n, a, b, c;
in >> n >> a >> b >> c;
vector<punct> v;
vector<int> dp(n + 1);
vector<bool> OK(n + 1);
for (int i = 1; i < n; i++)
{
a = (1LL * a * i) % n;
b = (1LL * b * i) % n;
c = (1LL * c * i) % n;
int minim = min(a, b);
int maxim = max(a, b);
v.push_back({minim, maxim, c});
}
for (int i = v.size() - 1; i >= 0; i--)
{
int minim = v[i].minim;
int maxim = v[i].maxim;
int k = v[i].k;
for (int j = minim; j <= maxim; j++)
if (OK[j])
break;
else
dp[j] = k, OK[j] = 1;
for (int j = maxim; j >= minim; j--)
if (OK[j])
break;
else
dp[j] = k, OK[j] = 1;
}
for (int i = 1; i < n; i++)
out << dp[i] << '\n';
return 0;
}