QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#518682 | #7606. Digital Nim | krishnnnna | TL | 1ms | 3860kb | C++17 | 988b | 2024-08-14 00:40:18 | 2024-08-14 00:40:18 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int sumOfDigits(int x) {
int sum = 0;
while (x > 0) {
sum += x % 10;
x /= 10;
}
return sum;
}
vector<int> computeGrundy(int n) {
vector<int> grundy(n + 1, 0);
for (int i = 1; i <= n; ++i) {
unordered_set<int> reachable;
int s = sumOfDigits(i);
for (int take = 1; take <= s; ++take) {
if (i - take >= 0) {
reachable.insert(grundy[i - take]);
}
}
int mex = 0;
while (reachable.find(mex) != reachable.end()) {
++mex;
}
grundy[i] = mex;
}
return grundy;
}
string digitalNimWinner(int n) {
vector<int> grundy = computeGrundy(n);
return (grundy[n] != 0) ? "Algosia" : "Bajtek";
}
int main() {
int t;cin>>t;
for(int i = 0; i< t; i++){
int n;
cin >> n;
cout << digitalNimWinner(n) << endl;}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3820kb
input:
4 1 10 42 190
output:
Algosia Bajtek Algosia Algosia
result:
ok 4 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3860kb
input:
1 1
output:
Algosia
result:
ok single line: 'Algosia'
Test #3:
score: -100
Time Limit Exceeded
input:
10000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 10...
output:
Algosia Algosia Algosia Algosia Algosia Algosia Algosia Algosia Algosia Bajtek Algosia Algosia Algosia Algosia Algosia Algosia Algosia Algosia Algosia Bajtek Algosia Algosia Algosia Algosia Algosia Algosia Algosia Algosia Algosia Bajtek Algosia Algosia Algosia Algosia Algosia Algosia Algosia Algosia...