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\n",i); 41 f = 1; 42 break; 43 } 44 } 45 if(f == 0) 46 printf("0\n"); 47 } 48 return 0; 49 }
有问题可以和我联系,bettyting2010#163 dot com