QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#504923 | #9107. Zayin and Count | ikun# | WA | 14ms | 3616kb | C++20 | 1.7kb | 2024-08-04 17:17:34 | 2024-08-04 17:17:36 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int unsigned long long
#define all(x) (x).begin(), (x).end()
#define ls id << 1
#define rs id << 1 | 1
using i128 = __int128_t;
void solve(){
int ac = 0, bc = 0;
vector<int>a(10), b(10), av(10), bv(10), ark(10), brk(10);
for(int i = 0;i < 10;i++){
cin >> a[i];
if(a[i]){
av[ac] = i;
ark[i] = ac++;
}
}
for(int i = 0;i < 10;i++){
cin >> b[i];
if(b[i]){
bv[bc] = i;
brk[i] = bc++;
}
}
string s;
cin >> s;
for(auto &c : s) {
c = ark[c-'0'] + '0';
}
vector<i128>pw(s.size());
vector<i128>pre(s.size());
pw[0] = 1;
for(int i = 1;i < pw.size();i++){
pw[i] = pw[i-1] * ac;
pre[i] = pw[i] + pre[i-1];
}
i128 x = 0;
if(a[0]){
for(int i = 0;i < s.size();i++){
x += pw[s.size()-i-1] * (s[i]-'0');
}
x++;
}else{
x += pre[s.size()-1];
//cerr << (int)x << endl;
for(int i = 0;i < s.size();i++){
x += ark[s[i]-'0'] * pw[s.size()-i-1];
}
x++;
}
if(x == 1){
cout << bv[0] << endl;
return;
}
s = "";
if(b[0]){
x--;
while(x){
s.push_back((x % bc) + '0');
x /= bc;
}
reverse(s.begin(), s.end());
}else{
i128 pp = bc, len = 1;
while(x > pp){
len++;
x -= pp;
pp *= bc;
}
vector<i128>pw(len);
pw[0] = 1;
for(int i = 1;i < len;i++) pw[i] = pw[i-1] * bc;
s = string(len, '0');
for(int i = 0;i < len;i++){
if(x > pw[len-i-1]) {
s[i] += x / pw[len-i-1];
x -= pw[len-i-1];
}
}
}
for(auto &c : s) {
c = bv[c-'0'] + '0';
}
cout << s << endl;
}
signed main(){
ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int t = 1;
cin >> t;
while(t--) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 14ms
memory: 3616kb
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 ...
output:
50000000010040000000000101 41990991999414091249949 101364364636933104003903 2229000800a000000000000000 7030040000!0000000000000000000 111111111611611111661111111111 5666658000000@00000000000040000000002p 60000000000001000000000000000000@0000 505885888775005550558080707878 2130000010000001000009100 6...
result:
wrong answer 1st lines differ - expected: '52755244567262766742575722', found: '50000000010040000000000101'