PTA甲级——1010
1010 Radix
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes
, if 6 is a decimal number and 110 is a binary number.
Now for any pair of positive integers N1 and N2, your task is to find the radix of one number while that of the other is given.
Input Specification:
Each input file contains one test case. Each case occupies a line which contains 4 positive integers:
1 |
|
Here N1
and N2
each has no more than 10 digits. A digit is less than its radix and is chosen from the set { 0-9, a
-z
} where 0-9 represent the decimal numbers 0-9, and a
-z
represent the decimal numbers 10-35. The last number radix
is the radix of N1
if tag
is 1, or of N2
if tag
is 2.
Output Specification:
For each test case, print in one line the radix of the other number so that the equation N1
= N2
is true. If the equation is impossible, print Impossible
. If the solution is not unique, output the smallest possible radix.
Sample Input 1:
1 |
|
Sample Output 1:
1 |
|
Sample Input 2:
1 |
|
Sample Output 2:
1 |
|
思路
大致题意:给两个数,N1,N2,后面的tag=1的时候,那么radix为N1的进制,反之则为N2的进制位。题目需要我们判断是否存在一种进制可以使得另一个数转换为统一进制之后二者相同。
思路:这道题目实际上就是一个进制转换 + 二分查找的一种思路就ok了的,首先将已知进制的数转换为十进制,然后我们再判断一下另一个数的最小进制,也就是另一个数中的最大值 + 1即为最小进制,但是我们需要注意一个问题,虽然题目给我们的要求是最大可以到的表示的为
'z'
也就是35,但是并没有说37、38等进制不可以呀,所以我们需要让进制的最大值设置为这个数。 再往下走就是我们需要进一步确定真正的进制为多少,而且我们可以很容易地知道这个进制升高和降低肯定会对这个数所表示的十进制数有一种单调性的影响,因此我们可以想到使用二分的方法来寻找这个进制数,如果出现了找不到的情况就直接返回-1,这个时候输出impossible,反之输出进制数。
代码
1 |
|