社区讨论

蒟蒻 95 求助,#17 WA

B2141确定进制参与者 2已保存回复 6

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
6 条
当前快照
1 份
快照标识符
@lo86hegt
此快照首次捕获于
2023/10/27 13:34
2 年前
此快照最后确认于
2023/10/27 13:34
2 年前
查看原帖
代码:
CPP
#include <bits/stdc++.h>
#define endl "\n"
#define qwq cin.tie(0);cout.tie(0);ios::sync_with_stdio(false)
using namespace std;
string P, Q, R, A, c = "0123456789ABCDEF";
int lenp, lenq, lenr, lena, p[105], r[105], q[105], a[105];
int main(){
	cin >> P >> Q >> R;
	lenp = P.length(), lenq = Q.length(), lenr = R.length();
	for(int i = lenp - 1; i >= 0; i--) p[lenp - i] = P[i] >= '0' && P[i] <= '9' ? P[i] - '0' : P[i] - 'A' + 10;
	for(int i = lenq - 1; i >= 0; i--) q[lenq - i] = Q[i] >= '0' && Q[i] <= '9' ? Q[i] - '0' : Q[i] - 'A' + 10;
	for(int i = lenr - 1; i >= 0; i--) r[lenr - i] = R[i] >= '0' && R[i] <= '9' ? R[i] - '0' : R[i] - 'A' + 10;
	int maxn;
	for(int i = 1; i <= lenp; i++) maxn = max(p[i], maxn);
	for(int i = 1; i <= lenq; i++) maxn = max(q[i], maxn);
	for(int i = 1; i <= lenr; i++) maxn = max(r[i], maxn);
	for(int b = maxn + 1; b <= 16; b++){
//		cout << b << "   ";
		memset(a, 0, sizeof a);
		for(int i = 1; i <= lenp; i++) for(int j = 1; j <= lenq; j++) a[i + j - 1] += p[i] * q[j];
	    lena = lenp + lenq;
	    for(int i = 1; i <= lena; i++){
	    	if(a[i] > 9){
				a[i + 1] += a[i] / b;
				a[i] %= b;
			}
		}
//		for(int i = lena; i >= 1; i--) cout << a[i];
//		cout << endl;
	    while(a[lena] == 0 && lena > 1) lena--;
	    bool flag = lena == lenr;
	    if(!flag) continue;
	    for(int i = 1; i <= lenr; i++) {
	    	if(a[i] != r[i]){
	    		flag = false;
	    		break;
			}
		}
	    if(flag){
	    	cout << b << endl;
	    	return 0;
		}
	}
	cout << 0 << endl;
	return 0;
}

回复

6 条回复,欢迎继续交流。

正在加载回复...