pat1010
来源:互联网 发布:淘宝怎么提升排名靠前 编辑:程序博客网 时间:2024/05/19 17:52
radix数值比较大。不能暴力,即使在二分搜索的时候也要注意,radix很大,计算可能会出现负数,那么比大小恰恰得到相反的结果,二分的结果就会Impossible。
#include<cstdio>#include<string>using namespace std;typedef long long ll;ll cton(char c){ if('0'<=c&&c<='9') return c-'0'; else return c-'a'+10;}ll compute(string num,ll radix){ ll sum=0; for(int i=0;i<num.length();i++){ sum*=radix; sum+=cton(num[i]); } return sum;}int cmp(string num,ll radix,ll s){ ll sum=0; for(int i=0;i<num.length();i++){ sum*=radix; if(sum<0) return 1; sum+=cton(num[i]); if(sum>s) return 1; } return (sum==s)-1;}int main(){ char n[2][15]; int tag; ll radix; while(scanf("%s%s%d%lld",n[0],n[1],&tag,&radix)==4){ ll s=compute(n[tag-1],radix); tag=2-tag; ll low=2,high=s+1,mid; for(int j=0;n[tag][j]!='\0';j++) low=max(low,cton(n[tag][j])+1); while(low<=high){ mid=low+(high-low)/2; int t=cmp(n[tag],mid,s); if(t==0) break; else if(t==-1) low=mid+1; else high=mid-1; } if(low<=high) printf("%lld\n",mid); else printf("Impossible\n"); } return 0;}
阅读全文
0 0
- pat1010
- PAT1010
- PAT1010
- pat1010
- pat1010
- PAT1010
- PAT1010
- pat1010
- PAT1010
- pat1010 Radix
- PAT1010(BUG)
- pat1010. Radix
- PAT1010 Radix
- PAT1010. 一元多项式求导
- pat1010. Radix (25) BUG!!!
- pat1010.Radix(25)
- PAT1010完美数列
- pat1010:一元多项式求导
- SecureCRT下spark-shell中scala无法删除
- NGUI_PopupList_012
- java NIO
- mvc mvp mvvm
- POJ 2187 Beauty Contest(凸包:最远点对距离)
- pat1010
- 1277 字符串中的最大值 next数组的妙用
- CSS的长度、角度、时间
- Python量化交易talib中SMA模块介绍
- hdu 4850 Wow! Such String! 构造 欧拉回路
- Android系统权限说明
- leetcode改进 Reverse Pairs
- struts2框架搭建开发环境
- 2017 ACM/ICPC Asia Regional Shenyang Online 1001(hdu 6194)