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 |
---|---|---|---|---|---|---|---|---|---|
#504979 | #9107. Zayin and Count | Xunwuqishi# | RE | 0ms | 0kb | C++23 | 2.5kb | 2024-08-04 17:59:29 | 2024-08-04 17:59:30 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define int unsigned long long
const int N = 1e6+10;
int INF = 1e9;
//int mod = 1e9+7;
//int mod = 1e9+7;
//int ways[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
int n,m,na;
int a[20],b[20],t[20],sa[20];
map<int,int> ma,mb;
string ta;
void solve() {
ma.clear();
mb.clear();
for(int i = 0;i<=9;i++) cin>>a[i];
int ca = 0;
for(int i = 0;i<=9;i++){
if(a[i]) ma[i] = ca++;
}
for(int i = 0;i<=9;i++) cin>>b[i];
cin>>ta;
for(int i = 0;i<ta.size();i++) na = na*10+ta[i] - '0';
int num = 0;
if(a[0] == 1){
for(int i = 0;i<ta.size();i++){
num = num*ma.size() + ma[ta[i]-'0'];
}
}
else{
int p = ma.size();
sa[0] = 1;
sa[1] = ma.size();
for(int i = 2;p<na;i++){
p *= ma.size();
sa[i] = p+sa[i-1];
if(sa[i]*ma.size() >= na) break;
}
int len = ta.size();
for(int i = 0;i<len;i++){
num += (ma[ (ta[len-i-1]-'0') ]+1)*sa[i];
}
}
string ans = "";
if(b[0] == 1){
if(a[0] == 0) num--;
int cb = 0;
for(int i = 0;i<=9;i++){
if(b[i]) mb[cb++] = i;
}
if(num == 0) ans += mb[0]+'0';
while(num){
ans = (char)(mb[num%mb.size()]+'0') + ans;
num /= mb.size();
}
}
else{
if(a[0] == 1) num++;
int cb = 1;
for(int i = 0;i<=9;i++){
if(b[i]) mb[cb++] = i;
}
if(num == 0) ans += mb[0]+'0';
int p = 1,loc = 1;
while(p<=num){
t[loc] = p;
p*=mb.size();
loc++;
}
t[1] = 0;
for(int i = 1;i<=loc;i++) t[i] += t[i-1];
t[1] = 1;
while(num){
p = t[loc];
int x = num/p;
if(x == 0){
loc--;
continue;
}
if(num%p == 0 && loc != 1) x-=1;
ans += (char)(mb[x]+'0');
num -= x*p;
loc--;
}
}
cout<<ans<<endl;
return;
}
signed main() {
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
//cout<<fixed<<setprecision(8);
int caset = 1;
cin>>caset;
for(int i = 1;i<=caset;i++){
//cout<<"Case "<<i<<": "<<endl;
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
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 ...
output:
4554652222445626425476 41990991999414091249949 101364364636933104003903 5855770 575255220 1070606600106771761670177770607 5666655565550