1010. Radix (25)
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)的更多相关文章
- PAT 解题报告 1010. Radix (25)
1010. Radix (25) Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 11 ...
- 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 ...
- pat 甲级 1010. Radix (25)
1010. Radix (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given a pair of ...
- 已经菜到不行了 PAT 1010. Radix (25)
https://www.patest.cn/contests/pat-a-practise/1010 题目大意: 输入四个数字,a,b,c,d. a和b是两个数字,c=1表示是第一个数字,c=2表示是 ...
- 1010. Radix (25)(未完成)
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...
- PAT (Advanced Level) 1010. Radix (25)
撸完这题,感觉被掏空. 由于进制可能大的飞起..所以需要开longlong存,答案可以二分得到. 进制很大,导致转换成10进制的时候可能爆long long,在二分的时候,如果溢出了,那么上界=mid ...
- 1010. Radix (25) pat
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...
- 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 ...
- 1010. Radix (25)(出错较多待改进)
Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The an ...
随机推荐
- Java并发包学习--ReentrantLock
这个锁叫可重入锁.它其实语义上和synchronized差不多,但是添加了一些拓展的特性. A reentrant mutual exclusion Lock with the same basic ...
- poj2388解题报告(排序)
POJ 2388,题目链接http://poj.org/problem?id=2388 题意: 水题一道 给定n个数,输出中间值,可以用sort,干脆快捷. 代码: //396K 32MS #incl ...
- WdatePicker时间控件联动选择
$("#txtStartTime").bind("click focus", function () { var endtimeTf = $dp.$('txtE ...
- javaweb学习总结十三(dom4j方式对XML文档进行解析以及Xpath的使用)
一:dom4j方式介绍 对于xml的解析总共有三种 1:jaxp方式,是sun公司开发的,分为sax方式和dom方式 2:jdom方式,后来其中部分人员参与开发dom4j 3:dom4j方式,是现在企 ...
- Scala的基本语法总结
Scala的函数: 目前博客园中的代码编辑器中还不支持Scala语言....用的Java代码的存储方式 object TestScala { def main(args: Array[String]) ...
- 【AngularJs】---实现select的ng-options
controller .controller('MainController', function($scope, $http, $ionicModal, $timeout) { var post = ...
- JAVA HttpsURLConnection 忽略对SSL valid 的验证
有时候我们对https进行测试的时候,经常自签署一个证书给server,这个certificate经常是不能通过验证的,但是我们又要用这个https,所以我们经常来忽略对SSL validation的 ...
- hiho欧拉路·二 --------- Fleury算法求欧拉路径
hiho欧拉路·二 分析: 小Ho:这种简单的谜题就交给我吧! 小Hi:真的没问题么? <10分钟过去> 小Ho:啊啊啊啊啊!搞不定啊!!!骨牌数量一多就乱了. 小Hi:哎,我就知道你会遇 ...
- 如何把网站及数据库部署到Windows Azure
http://edi.wang/Post/2014/1/1/deploying-website-with-db-to-azure-custom-domain
- javascript笔记—— call 简单理解
call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.argN ...