社区讨论
吔,哼,哼,啊啊啊啊啊啊啊啊啊啊
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;
}
结果 分,两个答案错误,救命
回复
共 5 条回复,欢迎继续交流。
正在加载回复...