错误信息如下:wrong answer On line 1 column 1, read 1, expected 0. 可是我明明已经编了如果没有合适的进制就输出零,希望有大佬可以帮我看看 (已开long long,已判断最大位) 代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//由于n进制下的数字里的位数不能大于n,本题的最小进制并不是从2开始计算的
//找到某一个数字最大的位数
int findMax(long long int num) {
int max = 0;
while (num / 10 != 0 || num % 10 != 0) {
if (num % 10 > max)
max = num % 10;
num /= 10;
}
return max;
}
//找到这三个数字里最大的位数
int maxofThree(long long int a, long long int b, long long int c) {
if (a > b) {
if (a >= c)
return a;
else if (c > a)
return c;
}
else {
if (b >= c)
return b;
else if (c >= b)
return c;
}
}
//将n进制的数字转换为十进制
int conversionDec(long long int num, int a) {
long long int sum = 0;
long long int weight = 1;
//(num%10)*a^i
for (int i = 1; num / a != 0; i++, weight *= a) {
sum += (num % 10) * weight;
num /= 10;
}
sum += (num % 10) * weight;
return sum;
}
int test(long long int p, long long int q, long long int r) {
int a = 0;
for (a = maxofThree(findMax(p), findMax(q), findMax(r)) + 1; a <= 16; a++) {
if (conversionDec(p, a) * conversionDec(q, a) == conversionDec(r, a))
return a;
}
return 0;
}
int main() {
long long int p = 0;
long long int q = 0;
long long int r = 0;
scanf("%lld%lld%lld", &p, &q, &r);
printf("%lld", test(p, q, r));
return 0;
}