每行三个数字,分别找到每个数字最大的单个位的数字,然后再选出这三个单个位数字当中最大的那个,因为进制肯定大于数当中的所有单个数字,比如如果一个数当中有数字5,那起码得6进制才能表示这个数。这样找到最大的单个数字之后我们就确定了这行的这三个数可能能用的最小进制,按照题目的要求最大可能进制为16,且题目说了输入的数字都是整数,于是我们也不必再考虑输入的数字带有字母的情况(进制大于10)。这样子就从该行的最小可能进制往16进制那边试就是了,把每种可能进制下的三个数字的十进制值求出来,然后把前两个数字的十进制值相乘,看是不是能等于第三个数的十进制值,如果能等,马上结束尝试并输出这个满足要求的进制,如果试到16进制都没有符合要求的,不再尝试并输出0。
本人已AC代码如下
#include<stdio.h>
int zhuan10(int shuzi,int jinzhi){
int jiwei=1;
int sum=shuzi%10;
//printf("传进来的数字是:%d,进制是:%d\n\n",shuzi,jinzhi);
while((shuzi/10)!=0){
int mubiao=1;
jiwei++;