#1和#14一直WA,求助!
  • 板块B2141 确定进制
  • 楼主Zpku
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/26 14:54
  • 上次更新2023/11/2 11:21:24
查看原帖
#1和#14一直WA,求助!
1144693
Zpku楼主2023/10/26 14:54

错误信息如下: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;
}
2023/10/26 14:54
加载中...