1010. Radix (25)
2017-04-06 16:22
267 查看
这题是参考网上的代码,需要注意3点:
1、radux的取值可能非常大,所以需要需用unsigned long long 类型;
2、需要使用二分查找
3、进行二分查找时,中间临时值可能非常大,甚至大出unsigned long long 表示范围,需要特殊的比较函数,但题目数据并不是那么强,所以不用特殊比较函数也能过。
#include <iostream> #include <stdio.h> #include <string.h> #include <vector> #include <map> #include <stack> #include <queue> #include <algorithm> #include <set> using namespace std; //1010 string a,b; int flag,radix,res; unsigned long long int tmp=0,l,r,mid,t; unsigned long long int get(char ch) { if(ch>='0' && ch<='9') return ch-'0'; return ch-'a'+10; } int main() { cin>>a>>b>>flag>>radix; if(flag==2) swap(a,b); for(int i=0;a[i];i++) tmp= tmp*radix+get(a[i]); for(int i=0;b[i];i++) if(get(b[i])>l) l=get(b[i]); for(l++,r=tmp+1;l<=r;) //二分查找 { mid=l+r>>1 , t=0; for(int i=0;b[i];i++) t=t*mid+get(b[i]); if(t==tmp) {res=mid ; break;} if(t>tmp) r=mid-1; else l=mid+1; } res ? printf("%d\n", res) : printf("Impossible\n"); return 0; }
相关文章推荐
- PAT 1010. Radix (25)
- 1010. Radix (25)
- pat 甲级 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)
- PAT 1010. Radix (25) 变态题,各种坑点
- 1010. Radix (25)
- PAT甲级 1010.Radix(25) 题目翻译与答案
- 1010. Radix (25)
- 1010. Radix (25)
- 【USACO】1010. Radix (25)
- PAT 1010. Radix (25)
- 1010. Radix (25)
- 1010. Radix (25)(java版)
- PAT 1010. Radix (25)
- 1010. Radix (25)
- PAT(甲级)1010. Radix (25)
- pat 1010. Radix (25)
- PAT 1010 Radix (25)没有通过
- 1010. Radix (25)