QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#605609 | #9107. Zayin and Count | jiangzhihui# | RE | 0ms | 0kb | C++17 | 1.7kb | 2024-10-02 18:10:36 | 2024-10-02 18:10:41 |
answer
#include <bits/stdc++.h>
using namespace std;
void solve() {
vector<int> a(10, -1);
vector<int> b(10, -1);
for (int i = 0, cur = 0; i < 10; i++) {
int x;
cin >> x;
if (x == 1) a[i] = ++cur;
}
for (int i = 0, cur = 0; i < 10; i++) {
int x;
cin >> x;
if (x == 1) b[cur++] = i;
}
unsigned long long x;
cin >> x;
auto get = [&](unsigned long long x) {
vector<pair<int, unsigned long long>> v;
unsigned long long cnt = 0;
for (auto u : a)
if (u != -1) cnt += 1;
unsigned long long cur = 1;
while (x > 0) v.push_back({x % 10, cur}), x /= 10, cur *= cnt;
unsigned long long ans = 1;
int cnt2 = 0;
while (!v.empty()) {
cnt2++;
assert(cnt2 <= 1e6);
auto [c, cnt] = v.back();
v.pop_back();
ans += (a[c] - 1) * cnt;
}
return ans;
};
unsigned long long t = get(x);
int num = 1;
// cnt = 3
// [1 , cnt ^ num] [1 , 3]
// [cnt ^ num + 1 , cnt ^ (num + 1)] [4 , 9]
// [cnt ^ (num + 1) + 1 , cnt ^ (num + 2)] [10 , 27]
unsigned long long cnt = 0;
for (auto u : b)
if (u != -1) cnt += 1;
unsigned long long cur = 1;
vector<unsigned long long> p;
int cnt2 = 0;
while (cur < t) {
// cnt2++;
// assert(cnt2 <= 1e6);
assert(cur > 0);
p.push_back(cur);
if (t <= (__int128)(cur)*cnt) break;
cur *= cnt;
num += 1;
}
t -= 1;
for (int i = num; i >= 1; i--) {
assert(p[i - 1] > 0);
cout << b[t / p[i - 1]];
t %= p[i - 1];
}
cout << '\n';
}
int main() {
std::ios::sync_with_stdio(false), cin.tie(0);
int T;
cin >> T;
while (T--) solve();
return 0;
}
詳細信息
Test #1:
score: 0
Runtime Error
input:
10000 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 1 1 1 0 0 950595954440050004054505054050 1 0 0 0 1 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 45467007076660767550460064 1 1 1 1 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 23373171320213300170200722 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 1 0 1 1 1 558565664666565565558468668484 1 1 0 0 1 0 1 0 1 ...