1010. Radix (25)
来源:互联网 发布:java技术文档怎么写 编辑:程序博客网 时间:2024/05/16 07:10
题目链接:https://www.patest.cn/contests/pat-a-practise/1010
题目大意:给出两个数a,b,和其中一个数的进制,判断另一个数能否在某进制下与其相等。
解题思路:
要注意的点:
1.数值使用long long类型,不然会溢出
2.使用二分法查找,不然会超时
代码如下:
#include<cstring>#include<algorithm>#include<cctype>#include<iostream>using namespace std;long long getminradix(string num){//各位数字最大的那一位 long long res=0; for(int i=0;i<num.length();i++){ if(isdigit(num[i])&&num[i]-'0'>res) res=num[i]-'0'; else res=(num[i]-'a'+10>res)?num[i]-'a'+10:res; } return res+1;}long long getdecimal(string num,long long radix){//radix进制下的10进制表示 long long res=0; for(int i=0;i<num.length();i++) res=res*radix+(isdigit(num[i])?num[i]-'0':num[i]-'a'+10); return res;}int cmp(string num2,long long radix,long long decnum1){//num在radix进制下与的decnum比较大小 long long lnum=getdecimal(num2,radix); if(lnum<0||lnum>decnum1)//lnum较大 return 1; else if(lnum<decnum1) return -1;//lnum较小 else return 0;//相等返回0}long long solve(string num2,long long left,long long right,long long decnum1){//二分法找合适的radix long long mid; while(left<=right){ mid=(left+right)/2; int cp=cmp(num2,mid,decnum1); if(cp==-1) left=mid+1;//找更大的radix else if(cp==1) right=mid-1;//找更小的radix else return mid;//找到,返回 } return -1;}int main(){ string num1,num2; int tag,radix; cin>>num1>>num2>>tag>>radix; if(tag==2) swap(num1,num2); long long l=getminradix(num2),decnum1=getdecimal(num1,radix); long long r=decnum1+1; long long res=solve(num2,l,r,decnum1); if(res==-1) cout<<"Impossible"<<endl; else cout<<res<<endl; return 0;}
阅读全文
0 0
- 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)-PAT
- 【PAT】1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)
- PAT 1010. Radix (25)
- 1010. Radix (25)
- PAT 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25) (JAVA)
- PAT 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)
- PAT 1010. Radix (25)
- java多线程的两种方式
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- 我们来尝试APK瘦身框架!
- JSPf分页技术
- 张一鸣、王兴、蔡文胜,福建人为什么爱做流量生意
- 1010. Radix (25)
- tensorflow的函数
- Android 传输数据时Base64编码算法详解
- Java byte转化成String
- 字符串函数---strstr()、memchr()、strchr()详解及实现
- 1011. World Cup Betting (20)
- 关键概念
- Java_GUI创建单机版QQ聊天小程序并实现简单的小功能(附所有源码)
- PET