QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#504923#9107. Zayin and Countikun#WA 14ms3616kbC++201.7kb2024-08-04 17:17:342024-08-04 17:17:36

Judging History

你现在查看的是最新测评结果

  • [2024-08-04 17:17:36]
  • 评测
  • 测评结果:WA
  • 用时:14ms
  • 内存:3616kb
  • [2024-08-04 17:17:34]
  • 提交

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'