110005 - 确定进制

题解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;//返回零
}

大家就看看,理解一下思路就好了(也就是不要抄题解!)