题解byzzq_helloworld 代码如下:
#include<bits/stdc++.h>
//引入头文件,在bits文件夹
using namespace std;//用标准的命名空间
int Change(char *x,int b)
//把n进制数转化为10进制数的函数
{
int num=0;//转换后的数
for(int i=0; i<strlen(x); i++)
//从第一位枚举到最后一位
{
if(x[i]-'0'>=b)//如果数超出了进制
return -1;//返回-1
num=num*b+x[i]-'0';//转化为整形的数
}
return num;//返回答案
}
int main()
{
char p[9],q[9],r[9];//定义p,q,r
scanf("%s %s %s",p,q,r);//输入p,q,r
int B=0;//进制数,默认为零
for(int i=2; i<=16; i++)//从二开始枚举
{
int pi=Change(p,i);//p的十进制
int qi=Change(q,i);//q的十进制
int ri=Change(r,i);//r的十进制
if(pi==-1||qi==-1||ri==-1)
//出现数的进制不符合(121为二进制等)
continue;//继续循环
if(pi*qi==ri)//如果满足条件
{
B=i;//确定进制
break;//跳出循环
}
}
printf("%d\n",B);//输出进制(如果没有找到,输出0)
return 0;//返回零
}
大家就看看,理解一下思路就好了(也就是不要抄题解!)