博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT甲题题解-1010. Radix (25)-二分搜索
阅读量:5135 次
发布时间:2019-06-13

本文共 1019 字,大约阅读时间需要 3 分钟。

题意:给出n1和n2,以及其中一个数的进制,问另一个数是多少进制的情况下,才会是两个数相等。不存在的话,则输出Impossible

 

这题思路很简单,但是要考虑的比较多,在简单题里面算是比较好的。

有两个注意点

1.我被题目给骗了!!!以为最大进制只可能是36,所以在程序里就枚举2~36的进制,导致错了一大片样例
最小进制下界low当然是n2的最大数字位+1
最大进制上界high题目没有给出说明,但最大只可能为n1(前提n1>=low)。
为啥不会超过n1呢,比如
40 10 1 10
很明显10是进制表示除“个位”外最小的了,那么只有当进制为40时,它才等于n1,如果进制再大,就肯定大于n1了。

2.如果从low枚举到high,当high很大的时候,会很费时间,题目也设了一个样例会让你超时。

所以这里需要二分搜索二进制k

#include 
#include
#include
#include
#include
#include
using namespace std;char n1[20],n2[20];int t,r;long long tmp;/*val2为n2在k进制下的值val2
target,return 1*/int cmp(long long*a,long long k,long long target,int len){ long long val2=0; for(int i=0;i
target) return 1; if(val2
low) low=tmp; } low=low+1; long long high=max(low,val1)+1; long long ans=binarySearch(a,low,high,val1,len); if(ans==-1) printf("Impossible\n"); else printf("%lld\n",ans); return 0;}
View Code

 

转载于:https://www.cnblogs.com/chenxiwenruo/p/6727939.html

你可能感兴趣的文章
CodeForces 670D2 Magic Powder 二分
查看>>
不能以方法的方式使用不可调用的“system.web.httprequest.querystring”
查看>>
试用dotnetbar10,提供下载链接
查看>>
iptables动作总结之一
查看>>
单纯形法
查看>>
897. Increasing Order Search Tree
查看>>
51nod 1174 区间中最大的数
查看>>
ListView实现分页功能【附Demo源码】
查看>>
react --- 路由
查看>>
1.5 组件开发基础
查看>>
12.14
查看>>
第二代:晶体管计算机
查看>>
BNUOJ-26580 Software Bugs KMP匹配,维护
查看>>
【leetcode】Search for a Range
查看>>
json常识
查看>>
Vue声明渲染以及axios实例
查看>>
面试题: TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!...
查看>>
MySQL基础
查看>>
Ceph神坑系列
查看>>
2017-2018-2 20179212《网络攻防》第四周作业
查看>>