当前位置:网站首页>All in one 1413: determine base

All in one 1413: determine base

2022-07-05 04:10:00 Studying hard

【 Title Description 】

6×9=42 It's wrong for the decimal system , But for 13 It's correct in hexadecimal . namely , 6(13)× 9(13)= 42(13), and 42(13)=4×131+2×130=54(10).

Your task is to write a program , Read in three integers p、q and r, Then determine a base B(2<=B<=40) bring p × q = r. If B There are many options , Output the smallest one .

for example :p=11, q=11, r=121. Then there are 11(3)× 11(3)= 121(3) because 11(3)= 1 × 31+ 1 × 30= 4(10) and 121(3)=1×32+2×31+1×30=16(10). For hexadecimal 10, There are also 11(10)× 11(10)= 121(10). In this case , The output should be 3. If there is no suitable base , The output 0.

【 Input 】

a line , Contains three integers p、q、r. p、q、r All bits of are numbers , also 1 ≤ p、q、r ≤ 1,000,000.

【 Output 】

An integer : Even if have to p×q=r The smallest established B. If there is nothing suitable B, The output 0.

【 sample input 】

6 9 42

【 sample output 】

13
#include<stdio.h>
#include<math.h>
int getmin(int k,int j)
{
	int temp;
	int i = 0;
	int count = 0;
	while (1)
	{
		temp = k % 10;
		count += temp * pow(j, i);
		i++;
		k /= 10;
		if (k == 0)
		{
			break;
		}
	}
	return count;
}
int main()
{
	int m, n, k;
	scanf("%d%d%d", &m, &n, &k);
	int flag = 1;
	int num1, num2, num3;
	int j;
	for (j = 2; j <= 40; j++)
	{

		num1 = getmin(m, j);
		num2 = getmin(n, j);
		num3 = getmin(k, j);
		if (num1 * num2 == num3)
		{
			flag = 0;
			break;
		}
	}
	if (flag == 1)
	{
		printf("0");
	}
	else
	{
		printf("%d", j);
	}
	return 0;
}

原网站

版权声明
本文为[Studying hard]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140702029347.html