PAT 1010. Radix
来源:互联网 发布:网络电玩城网站 编辑:程序博客网 时间:2024/05/21 10:21
题目:http://pat.zju.edu.cn/contests/pat-a-practise/1010
题解:
给两个数a,b和a的进制x,问b在哪个进制下和x进制的a相等。
本来看题目只说明了[0-9][a-z]的意义,以为答案最高只有36进制,提交之后错一大片T^T。测试了下,发现要求的进制竟然很大很大,而且可能超过int的表示范围。
如果从最小的进制开始往上枚举测试,最多只有两个测试点过不去。。。
最后的解法只有网上建议的二分搜索。(那么题目中的多种解输出最小进制不是没有意义么?)
代码:
#include<cstdio>#include<iostream>#include<cstring>#include<cmath>#include<string>#include<vector>#include<map>#include<set>#include<algorithm>#include<sstream>using namespace std;int charToInt(char x)//字符转数字{ if('0'<=x&&x<='9') return x-'0'; else return x-'a'+10;}long long charToDecimal(char* x,long long radix)//字符串转对应进制数字{ int len=strlen(x); long long ans=0; for(int i=0;i<len;++i) { ans*=radix; ans+=charToInt(x[i]); if(ans<0) return -1; } return ans;}int main(){ char as[15],bs[15],temp[15]; long long tag,radix,aimNum; int lenA,lenB; scanf("%s%s%lld%lld",as,bs,&tag,&radix); if(tag==1) { strcpy(temp,as); strcpy(as,bs); strcpy(bs,temp); tag=2; } lenA=strlen(as); lenB=strlen(bs); aimNum=charToDecimal(bs,radix); long long low=2;//进制下限 for(int i=0,j;i<lenA;++i) { j=charToInt(as[i]); if(j>=low) low=j+1; } long long high=aimNum+1;//进制上限 long long aimRadix; long long tempAns; bool flag=false; for(;low<=high;)//二分搜索 { aimRadix=(high+low)/2; tempAns=charToDecimal(as,aimRadix); if(tempAns==-1||tempAns>aimNum) high=aimRadix-1; else if(tempAns<aimNum) low=aimRadix+1; else { flag=true; break; } } if(flag) printf("%lld\n",aimRadix); else printf("Impossible\n"); return 0;}
来源:http://blog.csdn.net/acm_ted/article/details/20293167
0 0
- 1010. Radix (25)-PAT
- 【PAT】1010. Radix (25)
- PAT 1010. Radix
- PAT 1010. Radix (25)
- PAT 1010. Radix (25)
- PAT 1010. Radix (25)
- PAT 1010. Radix (25)
- PAT 1010. Radix
- PAT--1010. Radix
- PAT 1010. Radix (25)
- PAT 1010. Radix (25)
- 【PAT】1010. Radix (25)
- 【PAT】1010. Radix
- pat 1010. Radix (25)
- PAT 甲级 1010. Radix
- PAT 甲级 1010. Radix
- [PAT-甲级]1010.Radix
- PAT-1010. Radix (25)
- 计算复杂数学表达式的值
- ARM-bootloader-C语言环境设计
- 分享自己的一个小数据库“Bug”
- VS2010编程调试笔记1
- 解决Cannot create JDBC driver of class '' for connect URL 'null'问题
- PAT 1010. Radix
- 从《Puss in Boots》看职场生存之道
- C#面向对象之多态
- 为什么中国会走到这一步
- 程序员面试题精选100题(36)-在字符串中删除特定的字符[算法]
- 关于this的用法
- 线性代数(三十一) : 特征值与行列式以及迹的关系
- 线程安全的单例模型的演变与Double-Check-Locking的安全性
- windows高精度时间戳