openjudge 2972

3.1相邻数字的基数等比:确定进制

这道题很简单,下面代码已AC。

 1 #include<stdio.h>
 2 #include<math.h>
 3 /**
 4 * 把b进制的p转成10进制
 5 */
 6 int tran2ten(int p, int b)
 7 {
 8     int r = 0;
 9     int i = 0;
10     int m = 0;
11     while(p>0)
12     {
13         m = p%10;
14         if(m>=b)
15             return 0;
16         r += m*pow(b,i);
17         i++;
18         p = p/10;
19     }
20     return r;
21 }
22 
23 int main(void)
24 {
25     int T, p, q, r, i, f,x,y,z;
26     scanf("%d",&T);
27     while(T-->0)
28     {
29         scanf("%d %d %d",&p,&q,&r);
30         f = 0;
31         for(i=2;i<=16;i++)
32         {
33             x = tran2ten(p,i);
34             y = tran2ten(q,i);
35             z = tran2ten(r,i);
36             if(x == 0 || y == 0 || z == 0)//在i进制下,p,q,r是不合法的。
37                 continue;
38             if(x*y == z )
39             {
40                 printf("%d
",i);
41                 f = 1;
42                 break;
43             }
44         }
45         if(f == 0)
46             printf("0
");
47     }
48     return 0;
49 }
有问题可以和我联系,bettyting2010#163 dot com
原文地址:https://www.cnblogs.com/echoht/p/3672576.html