请大佬指教 75 分代码,不知道忽略了哪里
查看原帖
请大佬指教 75 分代码,不知道忽略了哪里
357748
TopGear楼主2022/8/15 02:28

代码如下:

#include <bits/stdc++.h>
using namespace std;
#define arrLength 7

// 初始化数组
void initArray(int* arr) {
	for (int i=0; i<arrLength; i++) {
		arr[i] = -1;
	}
}

// 把数的各个位打散倒序放入数组中
// 例如 114514 -> [4, 1, 5, 4, 1, 1, -1]
void splitToArray(int n, int* arr) {
	for (int i=0; ; i++) {
		if (n <= 0) {
			break;
		}
		arr[i] = n%10;
		n /= 10;
	}
}

// 获取一个数的最小进制
int getBase(int* arr) {
	int maxb=0;
	for (int i=0; i<arrLength; i++) {
		if (arr[i]==-1) {
			break;
		} else if (arr[i] > maxb) {
			maxb = arr[i];
		}
	}
	return maxb+1;
}

// 获取三个数中的最小进制
int getMinBase(int* ar, int* br, int* cr) {
	int x, y, z;
	x = getBase(ar);
	y = getBase(br);
	z = getBase(cr);
	if (x > y) {
		if (x > z) {
			return x;
		} else {
			return z;
		}
	} else {
		if (y > z) {
			return y;
		} else {
			return z;
		}
	}
}

// 转换成十进制数
long long toDecimal(int* arr, int base) {
	long long decimal = 0;
	for (int i=0; i<arrLength; i++) {
		if (arr[i] != -1) {
			decimal += arr[i] * ((long long)(pow(base, i)));
		} else {
			break;
		}
	}
	return decimal;
}

int main() {
	int a, b, c, minbase, base=0, ar[arrLength], br[arrLength], cr[arrLength];
	cin >> a >> b >> c;
	initArray(ar);
	initArray(br);
	initArray(cr);
	splitToArray(a, ar);
	splitToArray(b, br);
	splitToArray(c, cr);
	minbase = getMinBase(ar, br, cr);
	
	for (int i=minbase; i<17; i++) {
		if (toDecimal(ar, i) * toDecimal(br, i) == toDecimal(cr, i)) {
			base = i;
			break;
		}
	}
	
	cout << base << endl;
	
	return 0;
}

测试点信息 ->

2022/8/15 02:28
加载中...