OpenJudge 2972 确定进制

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 char p[32],q[32],r[32];
 4 int MinRadix()//找出最低限的进制 
 5 {
 6     int i,minRadix;
 7     minRadix=1;
 8     for(i=0;p[i];i++)//找出p[i]最大的数 
 9        if(minRadix<p[i]-'0')  minRadix=p[i]-'0';
10     for(i=0;q[i];i++)
11        if(minRadix<q[i]-'0')  minRadix=q[i]-'0';
12     for(i=0;r[i];i++)
13        if(minRadix<r[i]-'0')  minRadix=r[i]-'0';
14     return minRadix+1;
15 }
16 bool Radix(int radix)//radix进制转化为10进制
17 {
18     int i,P,Q,R;
19     for(P=i=0;p[i];++i)
20         P=P*radix+p[i]-'0';
21     for(Q=i=0;q[i];++i)
22         Q=Q*radix+q[i]-'0';
23     for(R=i=0;r[i];++i)
24         R=R*radix+r[i]-'0';
25     if(P*Q==R) return 1;
26     else return 0;
27 }
28 int main()
29 {
30     int T,i;
31     scanf("%d",&T);
32     while(T--)
33     {
34         scanf("%s%s%s",p,q,r);
35         for(i=MinRadix();i<17;i++)
36             if(Radix(i))  break;
37         printf("%d\n",i==17?0:i);
38     }
39     //system("pause");
40     return 0;
41 }       
42      

posted on 2012-08-02 16:09  mycapple  阅读(379)  评论(0编辑  收藏  举报

导航