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:
N1 N2 tag radix
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:

6 110 1 10

Sample Output 1:

2

Sample Input 2:

1 ab 1 2

Sample Output 2:

Impossible
 #include<stdio.h>
#include<string.h>
#include<map>
using namespace std; map<char,long long> mm; long long getlow(char n[])
{
long long Max = -;
for(long long i = ; i < strlen(n); i++)
{
if(Max < mm[n[i]])
Max = mm[n[i]];
}
return Max+;
} long long getx(char n[],long long radix)
{
long long sum = ;
for(long long i = ; i < strlen(n);i++)
{
sum = sum * radix + mm[n[i]];
}
return sum;
} long long compare(char n[],long long x,long long radix)
{
long long sum = ;
for(long long i = ; i < strlen(n);i++)
{
sum = sum * radix + mm[n[i]];
if(sum > x ) return ;
} if(sum == x) return ;
if(sum < x) return -;
} long long getresult(long long low,long long high,char n[],long long x)
{
//mid 要从low 开始,因为 当两个数相等的时候,它的进制数的最小值是low
long long mid = low ;
while(low <= high)
{
long long b = compare(n,x,mid);
if(b == ) return mid;
else if(b == )
{
high = mid -; }
else if(b == -)
{
low = mid+;
} mid = (low + high)/;
} return -;
} int main()
{
long long i;
for(i = '' ; i <= '';i++)
mm[i] = i - ''; for(i = 'a' ; i <='z' ; i++)
mm[i] = + i - 'a'; char n1[];
char n2[];
char ctem[];
long long tag;
long long radix;
scanf("%s%s%lld%lld",n1,n2,&tag,&radix);
if(tag == )
{
strcpy(ctem,n2);
strcpy(n2,n1);
strcpy(n1,ctem);
} long long x = getx(n1,radix); long long low = getlow(n2);
//上限是 x+1 : 10 9999 2 10
//low是 N2某一位上的数,而x 是N1,
//low 某一位上的数就比N1 大,
//那么N2无论什么进制,N1 和 N2肯定是不相等的。
//所以不用判断 low 和 x 的 大小
long long high = x + ;
long long result = getresult(low,high,n2,x);
if(result == -) printf("Impossible\n");
else
{
printf("%lld\n",result);
} return ;
}

1010. Radix (25)的更多相关文章

  1. PAT 解题报告 1010. Radix (25)

    1010. Radix (25) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 11 ...

  2. PAT 甲级 1010 Radix (25)(25 分)进制匹配(听说要用二分,历经坎坷,终于AC)

    1010 Radix (25)(25 分) Given a pair of positive integers, for example, 6 and 110, can this equation 6 ...

  3. pat 甲级 1010. Radix (25)

    1010. Radix (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a pair of ...

  4. 已经菜到不行了 PAT 1010. Radix (25)

    https://www.patest.cn/contests/pat-a-practise/1010 题目大意: 输入四个数字,a,b,c,d. a和b是两个数字,c=1表示是第一个数字,c=2表示是 ...

  5. 1010. Radix (25)(未完成)

    Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...

  6. PAT (Advanced Level) 1010. Radix (25)

    撸完这题,感觉被掏空. 由于进制可能大的飞起..所以需要开longlong存,答案可以二分得到. 进制很大,导致转换成10进制的时候可能爆long long,在二分的时候,如果溢出了,那么上界=mid ...

  7. 1010. Radix (25) pat

    Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...

  8. 1010 Radix (25)(25 point(s))

    problem Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true ...

  9. 1010. Radix (25)(出错较多待改进)

    Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...

随机推荐

  1. JSONP与JSON的关系

    这篇文章<说说JSON和JSONP,也许你会豁然开朗>写得非常棒,推荐一下 http://kb.cnblogs.com/page/139725/ (大神,对不起,我记录一下,因为你写的真得 ...

  2. [未完成]关于CSS的总结

    CSS和html 数据和样式分离,在java中称为降低了耦合性. css和html相结合的第一种方式. 1,每一个html标签中都有一个style样式属性.该属性的值就是css代码. 2,使用styl ...

  3. CSS中link和@import的区别是:

    Link属于html标签,而@import是CSS中提供的 在页面加载的时候,link会同时被加载,而@import引用的CSS会在页面加载完成后才会加载引用的CSS @import只有在ie5以上才 ...

  4. [原创]centos6.5 dhcpd 服务一直failed状态

    因为要部署kickstart自动化系统分发,所以需要在上面配置dhcp服务器,之前也使用同样的机器进行配置,没是没有问题的,但是这次在配置了dhcpd.conf文件后,重启服务的时候却一直提示 [ro ...

  5. Android Support v4,v7,v13

    Android Support v4 是最早(2011年4月份)实现的库.用在Android1.6 (API lever 4)或者更高版本之上.它包含了相对V4, V13大的多的功能. 例如:Frag ...

  6. sql中nvarchar(max)长度测试

    nvarchar(max)长度测试:在使用convert强制类型转化之后 文本长度可以突破8000的上限.并且nvarchar(max)的最大长度可达到2^31以下为验证SQL: Declare @A ...

  7. linux file命令小记

    在linux中,所有东西都是文件:而且他并没有后缀名这一概念.Linux的扩展名没有太大的意义, file.tar.gz file.tgz file.tar.bz2 file.rar file.gz ...

  8. 119. Pascal's Triangle II

    Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...

  9. 终于解决了我的DISCUZ 无法连接到您的服务器,可能您的服务器处于防火墙后端 论坛云平台的问题~

    事由:由于前几天折腾备份,将论坛源文件误删了大部分,于是我重新下载了源码,传到了空间. 然后问题来了,我关闭纵横搜索提示“无法连接到您的服务器,可能您的服务器处于防火墙后端”,设置纵横搜索页一直显示“ ...

  10. ie支持CSS3标签

    让IE6/IE7/IE8浏览器支持CSS3属性 by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/w ...