求大佬指教为什么我这个错了
查看原帖
求大佬指教为什么我这个错了
542276
cannianyamila楼主2021/10/17 22:39

会在第1、14.16三个点报错,求来个大佬解惑

#include <iostream>
#include <math.h>

using namespace std;

int minHEX(int i)//求出每个数的每一位中最大的数 
{
	int temp=0;
	while(i!=0)
	{
		if(i%10>temp)
		{
			temp=i%10;
		}
		i=i/10;
	}
	return temp;
}

int max(int a,int b,int c)//确定三个数中各位里最大的以确定该从哪个进制开始算 
{
	int result=a;
	if(b>result)
	{
		result=b;
	}
	if(c>result)
	{
		result=c;
	}
	return result;
}

int num(int i,int j)//改变各进制的数为10进制 
{
	int count=0;
	int sum=0;
	while(i!=0)
	{	sum=sum+(i%10)*pow(j,count);
		count++;
		i=i/10;
	 } 
	 return sum;
}

int main()
{
	int p,q,r;
	int a,b,c;
	int x,y,z;
	int check=0;
	scanf("%d %d %d",&p,&q,&r);
	int i;
	a=minHEX(p);
	b=minHEX(q);
	c=minHEX(r);
	int MAX=max(a,b,c);
	if(MAX==1)//各数各位最大为一的情况单独讨论 
	{
		for(i=2;i<=16;i++)
		{
			x=num(p,i);
			y=num(q,i);
			z=num(r,i);
			if(x*y==z)
			{
				printf("%d",i);
				check=1;
				break;
			}
		}
	}
	else
	{
		for(i=MAX;i<=16;i++)
		{
			x=num(p,i);
			y=num(q,i);
			z=num(r,i);
			if(x*y==z)
			{
				printf("%d",i);
				check=1;
				break;
			}
		}
	}
	if(check==0)
	{
		printf("0");
	}
	return 0;
}
2021/10/17 22:39
加载中...