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 |
---|---|---|---|---|---|---|---|---|---|
#333048 | #7881. Computational Complexity | sinsop90 | WA | 100ms | 10636kb | C++14 | 1.5kb | 2024-02-19 16:55:49 | 2024-02-19 16:55:49 |
Judging History
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 1e7 + 5;
map<int, int> mp, bac;
int f[maxn], g[maxn], T, M;
vector<int> vec;
void dfs(int now) {
if(now > 1000000000000000) return;
if(mp[now]) return;
mp[now] = 1;
if(now > 13) vec.push_back(now);
dfs(now * 2), dfs(now * 3), dfs(now * 5), dfs(now * 7);
}
void init() {
for(int i = 1;i <= 13;i++) {
f[i] = max(i, g[i / 2] + g[i / 3] + g[i / 5] + g[i / 7]);
g[i] = max(i, f[i / 2] + f[i / 3] + f[i / 4] + f[i / 5]);
}
for(int i = 13;i >= 1;i--) f[i] -= f[i - 1], g[i] -= g[i - 1];
for(int i = 0;i <= 13;i++) vec.push_back(i);
dfs(1);
sort(vec.begin(), vec.end());
for(int i = 0;i < vec.size();i++) bac[vec[i]] = i;
for(int i = 0;i < vec.size();i++) {
int X = vec[i];
if(mp[X * 2] && X * 2 > 13) (f[bac[X * 2]] += g[i]) %= M, (g[bac[X * 2]] += f[i]) %= M;
if(mp[X * 3] && X * 3 > 13) (f[bac[X * 3]] += g[i]) %= M, (g[bac[X * 3]] += f[i]) %= M;
if(mp[X * 5] && X * 5 > 13) (f[bac[X * 5]] += g[i]) %= M, (g[bac[X * 5]] += f[i]) %= M;
if(mp[X * 4] && X * 4 > 13) (g[bac[X * 4]] += f[i]) %= M;
if(mp[X * 7] && X * 7 > 13) (f[bac[X * 7]] += g[i]) %= M;
}
for(int i = 1;i < vec.size();i++) (f[i] += f[i - 1]) %= M, (g[i] += g[i - 1]) %= M;
}
void solve() {
int n;
cin >> n;
int P = upper_bound(vec.begin(), vec.end(), n) - vec.begin() - 1;
cout << f[P] % M << " " << g[P] % M << '\n';
}
signed main() {
// ios::sync_with_stdio(0);
// cin.tie(0), cout.tie(0);
cin >> f[0] >> g[0] >> T >> M;
init();
while(T --) solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 54ms
memory: 10552kb
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: 58ms
memory: 10484kb
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: 0
Accepted
time: 45ms
memory: 10568kb
input:
2023 2023 10 2023 0 1 2 3 4 5 6 7 8 9
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
result:
ok 20 numbers
Test #4:
score: 0
Accepted
time: 59ms
memory: 10512kb
input:
36092 30559 2149 729566623185 909730017626 961811467628 978809456383 494310140318 760462959632 726343527430 220697276132 366336227300 456813204361 569783542145 13854148170 51526515764 564416233246 876430686824 862897449267 956440673661 512777546436 728860125927 799238602356 978766770799 47962348351 ...
output:
192287632545 510282654057 513694515018 658644741565 90751152870 6088748556 138070013247 301112114677 224113421002 105290451187 630454127249 196841848259 546918129568 526274849982 226761501362 157889210040 135623074930 620463814922 78467045157 602244472172 51639549042 411354142414 329188915935 306494...
result:
ok 4298 numbers
Test #5:
score: 0
Accepted
time: 54ms
memory: 10556kb
input:
46012 72474 6895 931299293479 635558333906 151352929427 186830308154 201652909474 130684521091 862625793178 335372663856 565394770762 609752364488 636658378167 568072145317 23602174799 74849827839 567735061723 964475612065 721588322843 526921882143 141483206690 794896616456 923141155683 443983986019...
output:
737640936783 269480550026 785950579990 586907405473 274405996613 356240054012 164145774405 803378519477 613956922400 426121843045 509646717167 788278629379 95131481441 672600899832 720839818877 52329269906 131977527669 257593035330 737640936783 269480550026 202443098753 171133839273 188615102144 605...
result:
ok 13790 numbers
Test #6:
score: -100
Wrong Answer
time: 100ms
memory: 10636kb
input:
4625 65696 87448 104757899185 324541097749 340894391228 353710640194 913290645927 500906082550 994613091630 486893604015 755863379632 795242109754 670982629049 89739557323 995677833835 622128974870 291590021762 74643709454 491030939322 504220665415 590951839890 749414110824 908656060298 831415689095...
output:
24017028596 61020984279 -14721881104 8518714361 4807132724 94915889679 60642395760 99169995073 45912197521 30663794937 26807208137 73005099296 31855861883 38442189712 61377861921 69296474844 15633158436 24561226404 83188091024 -3479688660 92283972576 51782451279 22904017080 27746280119 46615471334 7...
result:
wrong answer 3rd numbers differ - expected: '90036018081', found: '-14721881104'