QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#327933 | #7881. Computational Complexity | Hunster | RE | 0ms | 0kb | C++14 | 2.0kb | 2024-02-15 15:36:28 | 2024-02-15 15:36:29 |
Judging History
answer
#include <bits/stdc++.h>
using LL = long long;
constexpr LL inf64 = (LL)(1e18) + 18;
constexpr int h[] = {2, 3, 5, 7};
constexpr LL M = (LL)(1e15) + 15;
int f0, g0, T; LL mod;
std::vector<LL> vals, f, g, ef, eg;
void dfs(int i, LL v) {
if (i == 4) {
vals.push_back(v);
return;
}
for (int j = 0; v < M; j++, v *= h[i])
dfs(i + 1, v);
}
std::pair<LL, LL> query_f(LL v) {
int p = std::upper_bound(vals.begin(), vals.end(), v) - vals.begin() - 1;
return {f[p], ef[p]};
}
std::pair<LL, LL> query_g(LL v) {
int p = std::upper_bound(vals.begin(), vals.end(), v) - vals.begin() - 1;
return {g[p], eg[p]};
}
int main() {
scanf("%d%d%d%lld", &f0, &g0, &T, &mod);
vals.push_back(0);
for (int i = 1; i <= 13; i++) dfs(0, i);
std::sort(vals.begin(), vals.end());
vals.resize(std::unique(vals.begin(), vals.end()) - vals.begin());
f.resize(vals.size());
g.resize(vals.size());
f[0] = f0 % mod;
g[0] = g0 % mod;
ef[0] = f0;
eg[0] = g0;
for (int i = 1; i < vals.size(); i++) {
LL t = vals[i];
f[i] = (query_g(t / 2).first + query_g(t / 3).first + query_g(t / 5).first + query_g(t / 7).first) % mod;
ef[i] = std::min(inf64, query_g(t / 2).second + query_g(t / 3).second + query_g(t / 5).second + query_g(t / 7).second);
g[i] = (query_f(t / 2).first + query_f(t / 3).first + query_f(t / 4).first + query_f(t / 5).first) % mod;
eg[i] = std::min(inf64, query_f(t / 2).second + query_f(t / 3).second + query_f(t / 4).second + query_f(t / 5).second) % mod;
if (ef[i] <= 13) {
ef[i] = std::max(t, ef[i]);
f[i] = ef[i] % mod;
}
if (eg[i] <= 13) {
eg[i] = std::max(t, eg[i]);
g[i] = eg[i] % mod;
}
}
while (T--) {
LL n;
scanf("%lld", &n);
printf("%lld %lld\n", query_f(n).first, query_g(n).first);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Runtime Error
input:
1958 920 10 100000000000 0 1 2 3 10 100 200 1000 19580920 20232023