QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#327939 | #7881. Computational Complexity | Hunster | WA | 86ms | 9740kb | C++14 | 2.0kb | 2024-02-15 15:37:28 | 2024-02-15 15:37: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());
ef.resize(vals.size());
g.resize(vals.size());
eg.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: 100
Accepted
time: 86ms
memory: 9740kb
input:
1958 920 10 100000000000 0 1 2 3 10 100 200 1000 19580920 20232023
output:
1958 920 3680 7832 10592 9554 17504 11276 50294 64826 784112 893714 1894550 1905470 12057866 12979424 71481494756 48626708512 28127864908 7251681354
result:
ok 20 numbers
Test #2:
score: 0
Accepted
time: 85ms
memory: 8768kb
input:
0 0 10 100000000000 0 1 2 3 4 10 20 30 40 100
output:
0 0 1 1 2 2 3 3 4 4 11 12 25 26 41 41 55 58 162 172
result:
ok 20 numbers
Test #3:
score: -100
Wrong Answer
time: 86ms
memory: 8624kb
input:
2023 2023 10 2023 0 1 2 3 4 5 6 7 8 9
output:
0 0 0 1 1 2 2 3 3 4 4 5 6 6 7 7 8 8 9 9
result:
wrong answer 4th numbers differ - expected: '0', found: '1'