社区讨论

吔,哼,哼,啊啊啊啊啊啊啊啊啊啊

B2141确定进制参与者 4已保存回复 5

讨论操作

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

当前回复
5 条
当前快照
1 份
快照标识符
@m41em0ii
此快照首次捕获于
2024/11/28 22:22
去年
此快照最后确认于
2025/11/04 13:42
4 个月前
查看原帖
代码:
CPP
#include <iostream>
#include <cmath>

// 将给定进制数num转换为十进制数
int convertToDecimal(int num, int base)
{
	int decimal = 0;
	int power = 1;
	while (num > 0)
	{
		int digit = num % 10;
		if (digit >= base)
		{
			return -1; // 数字在给定进制下无效
		}
		decimal += digit * power;
		num /= 10;
		power *= base;
	}
	return decimal;
}

// 检查p * q == r是否在给定的进制base下成立
bool isValidBase(int p, int q, int r, int base)
{
	int pDec = convertToDecimal(p, base);
	int qDec = convertToDecimal(q, base);
	int rDec = convertToDecimal(r, base);

	if (pDec == -1 || qDec == -1 || rDec == -1)
	{
		return false; // 任意一个数在给定进制下无效
	}

	return (pDec * qDec == rDec);
}

int findMinBase(int p, int q, int r)
{
	int minBase = 2; // 最小的可能进制为2(二进制)

	while (true)
	{
		if (isValidBase(p, q, r, minBase))
		{
			return minBase; // 找到满足条件的最小进制
		}

		minBase++;

		// 设置一个上限来防止无限循环(虽然理论上进制数可以无限大,但实际应用中需要限制)
		if (minBase > 100)   // 可以根据需要调整这个上限值
		{
			break;
		}
	}

	return 0; // 没有找到满足条件的进制
}

int main()
{
	int p, q, r;
	std::cin >> p >> q >> r;

	int result = findMinBase(p, q, r);
	std::cout << result << std::endl;

	return 0;
}
结果 9090 分,两个答案错误,救命

回复

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

正在加载回复...