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