会在第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;
}