PAT1010
来源:互联网 发布:招聘渠道数据分析 编辑:程序博客网 时间:2024/05/07 02:38
1010. Radix (25)
参考了别人的代码,由于进制太大,可能会超出long long 所以要一个compare。
二分查找答案
#include <iostream> #include <string.h> using namespace std; typedef long long LL; LL str2Num(char * str, LL radix){ LL rst=0;for(int i=0;str[i];i++){rst*=radix;if(str[i]>='a')rst+=(str[i]-'a')+10;elserst+=(str[i]-'0');}return rst;} LL calcRadix(char * str){ //最低进制int rst=-1;for(int i=0;str[i];i++)if(str[i]>='a')rst=max(rst,(str[i]-'a')+10);elserst=max(rst,(str[i]-'0'));return rst+1;} int compare(char* str, LL radix, LL target){ LL rst=0;for(int i=0;str[i];i++){rst*=radix;if(str[i]>='a')rst+=(str[i]-'a')+10;elserst+=(str[i]-'0');if(rst>target)return 1;}if(rst > target) return 1; else if(rst<target) return -1; else return 0; } LL binarySearch(char* B, LL low, LL high, LL target){ LL mid,val; while(low<=high){ mid = (low+high)/2; val=str2Num(B,mid); int res = compare(B,mid,target); if(res > 0) high = mid-1; else if(res<0) low = mid+1; else return mid; } return -1; } int main() { char A[12],B[12]; int chose; LL radix,res; cin>>A>>B>>chose>>radix; if(strcmp(A,"1")==0&&strcmp(B,"1")==0) printf("2\n"); else if(strcmp(A,B)==0) printf("%d\n",radix); else{ if(chose==1){ LL target = str2Num(A,radix); LL least = calcRadix(B); res = binarySearch(B,least,max(target,least),target); } else{ LL target = str2Num(B,radix); LL least = calcRadix(A); res = binarySearch(A,least,max(target,least),target); } if(res==-1) cout<<"Impossible"<<endl; else cout<<res<<endl; } 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:一元多项式求导
- 天風姤 (易經大意 韓長庚)
- java循环结构--for,while以及do....while
- 数据结构和算法学习开始啦
- <算法导论>学习笔记(1)--第1章 算法在计算中的作用
- 黑马程序员--html一些基础知识小结
- PAT1010
- 拦截导弹
- UVALive 4527 Vaccination Centers 搜索+剪枝
- 同一张表不同SESSION相互持有对方记录引发的死锁
- LeetCode OJ:Text Justification
- 蛇年最后一篇以及新春之礼:高效开发视频讲座下载
- poj 1837 Balance (01背包)
- hdu 1754 I Hate It(树状数组 | 线段树)
- 10个调试和排错的小建议