【PAT Advanced Level】1010. Radix (25)
来源:互联网 发布:南京淘宝美工培训班 编辑:程序博客网 时间:2024/05/17 22:53
这题参考了别人的代码,我写的总是有几个case过不去,也懒得找错误了。
#include <stdio.h>#include <string.h>long num2Dec(char *,int);//转换成10进制数据long findLowRadix(char *);//寻找最低进制数long binarysearch(char *,long ,long, long);int main(){char N1[11],N2[11];int tag,radix;long target = 0L,result=0L;long least;//进制最小long most;//进制最大scanf("%s%s",N1,N2);scanf("%d%d",&tag,&radix);if(1 == tag){target = num2Dec(N1,radix);least=findLowRadix(N2);most = (target + 1 > least + 1) ? target +1 :least +1; result = binarysearch(N2,least,most,target);if(result == -1)printf("Impossible");elseprintf("%d\n",result);}else if(2 == tag){target = num2Dec(N2,radix);least=findLowRadix(N1);most = (target + 1 > least + 1) ? target +1 :least +1; result = binarysearch(N1,least,most,target);if(result == -1)printf("Impossible");elseprintf("%d\n",result);}return 0;}long num2Dec(char *p,int radix){int len = strlen(p);int m=1,num=1,sum=0;int i=0;for(i=len-1;i>=0;i--){if(p[i]>='a' && p[i]<='z')num = p[i]-'a' + 10;else if(p[i] >= '0' && p[i] <= '9')num = p[i]-'0';sum += num*m;m*=radix;}return sum;}//ab:最小就是12进制 69:最小就是10进制long findLowRadix(char *p){long len=strlen(p),low=0,num=0,i=0; for(i=len-1;i>=0;i--) { if(p[i]>='a'&&p[i]<='z') num= p[i] - 'a' + 10; else if(p[i]>='0'&& p[i]<='9') num=p[i] - '0'; if(num+1>low) low=num+1; } return low; }long binarysearch(char *p,long low,long high,long target){long mid=low,tmp=0;while(low<=high){tmp = num2Dec(p,mid);if(tmp > target)high=mid-1;else if(tmp < target)low = mid+1;else return low;mid = (low+high)/2;}return -1;}
- 【PAT Advanced Level】1010. Radix (25)
- 【c++】PAT (Advanced Level)1010. Radix (25)
- PAT (Advanced Level) Practise 1010. Radix (25)
- 【PAT】【Advanced Level】1010. Radix (25)
- PAT (Advanced Level) Practise 1010. Radix (25)
- 1010. Radix (25)——PAT (Advanced Level) Practise
- PAT (Advanced Level) 1010. Radix (25) 进制匹配 二分法
- PAT (Advanced Level) Practise 1010. Radix (25) C++
- 浙大 PAT Advanced level 1010. Radix
- PAT (Advanced Level) Practise 1010Radix (25)
- PAT (Advanced) 1010. Radix (25)
- Pat(Advanced Level)Practice--1010(Radix)
- PAT (Advanced Level) Practise 1010 Radix
- 1010. Radix (25)-PAT
- 【PAT】1010. Radix (25)
- PAT 1010. Radix (25)
- PAT 1010. Radix (25)
- PAT 1010. Radix (25)
- 支持向量机
- IOS常见错误纠正和使用心得
- linux软件安装命令
- 嵌入式c笔试题
- JS与JQUERY获取页面大小、滚动条位置、元素位置
- 【PAT Advanced Level】1010. Radix (25)
- SecureCRT 常用命令
- Documentation\backlight\lp855x-driver
- 分布式服务框架 Zookeeper -- 管理分布式环境中的数据
- 新手入门AMF协议基础全解
- 为什么最后你哪也没去?
- android BitmapFactory.Options(总结网络中出现的一些)
- (c++)图形2
- 变形最短路径,最安全节点求解