【题解】1010 Radix (25 分)⭐⭐⭐ 【二分 进制转换】
发布日期:2021-06-29 16:19:11
浏览次数:2
分类:技术文章
本文共 1485 字,大约阅读时间需要 4 分钟。
Input
Output
Examples
Sample Input 1:
6 110 1 10 Sample Output 1: 2 Sample Input 2: 1 ab 1 2 Sample Output 2: ImpossibleHint
题意:
给出2个数,一个标记t和进制r,对应标记的数为r进制,求两数相等时,另一个数的最小进制
题解:
原本以为是暴力无脑进制转换,后来发现还是有一点小技巧
首先数据比较大,直接暴力有2组数据过不去,需要二分优化 其次二分时会爆long long,要判断>0的情况(即溢出)#includeusing namespace std;#define ms(x, n) memset(x,n,sizeof(x));typedef long long LL;const int INF = 1 << 30;const int MAXN = 1e5+10;LL RTranTo10(int r, string s){ LL res = 0; int len = s.length(); for(int i = 0; i < len; ++i){ if(s[i] >= '0' && s[i] <= '9') res += (s[i]-'0')*pow(r, len-1-i); else res += (s[i]-'a'+10)*pow(r, len-1-i); } return res;}int solve(LL n, string s){ int maxn = 1; for(int i = 0; i < s.length(); ++i){ if(isdigit(s[i])) maxn = max(maxn, s[i]-'0'); else maxn = max(maxn, s[i]-'a'+10); } LL l = maxn+1, r = max(l, n)+1, mid, tmp; while(l < r){ mid = (l+r)/2, tmp = RTranTo10(mid, s); if(tmp < 0 || tmp > n) r = mid; //tmp<0是判断tmp爆longlong溢出了,太坑了 else if(tmp < n) l = mid+1; else return mid; } return -1;}int main() { ios::sync_with_stdio(false); string n1, n2; int tag, r, ret; cin >> n1 >> n2 >> tag >> r; if(tag == 1) ret = solve(RTranTo10(r, n1), n2); else ret = solve(RTranTo10(r, n2), n1); if(ret == -1) cout << "Impossible\n"; else cout << ret << endl; return 0;}
转载地址:https://suprit.blog.csdn.net/article/details/103358142 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月26日 09时12分01秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java程序员从笨鸟到菜鸟之(六十八)细谈Spring(二)自己动手模拟spring
2019-04-30
Java程序员从笨鸟到菜鸟全部博客目录
2019-04-30
java程序员从笨鸟到菜鸟之(七)一—java数据库操作
2019-04-30
Java程序员从笨鸟到菜鸟之(八)反射和代理机制
2019-04-30
面试心得与总结—BAT、网易、蘑菇街
2019-04-30
Java对象初始化顺序
2019-04-30
Java开发的几个注意点
2019-04-30
我的Java后端书架 (2016年暖冬4.0版)
2019-04-30
每个程序员都必读的10篇文章
2019-04-30
也谈IO模型
2019-04-30
谈谈互联网后端基础设施
2019-04-30
Mybatis的ResultMap的使用
2019-04-30
Java 异常处理的误区和经验总结
2019-04-30
MyBatis(1):MyBatis入门
2019-04-30
Java 性能优化的五大技巧
2019-04-30
性能优化那些事
2019-04-30
成为一名更好的程序员:如何阅读源代码
2019-04-30
我为何爱读代码?你为何也应当爱?
2019-04-30
TCP/IP之大明内阁---协议的制定
2019-04-30