POJ 1220 Number Base Conversion
2011-03-18 14:11
337 查看
高精度任意进制间的转换,按照整形数据转换进制的办法,a进制转b进制,循环先对b求余数,再除以b这个过程,知道商为0
在高精度下,求余数可以模拟除法,进行辗转相除,除b的过程只要每一位上都除b
参考了maigo大牛的代码,然后自己找了几组数据试了下,真的就是那么回事!
期间判断一个数是否在一个区间内习惯性地写成了a<=x<=b的形式,导致错误,代码应该写成a<=x&&x<=b
代码:
在高精度下,求余数可以模拟除法,进行辗转相除,除b的过程只要每一位上都除b
参考了maigo大牛的代码,然后自己找了几组数据试了下,真的就是那么回事!
期间判断一个数是否在一个区间内习惯性地写成了a<=x<=b的形式,导致错误,代码应该写成a<=x&&x<=b
代码:
#include<iostream> #include<memory.h> #include<string> #include<cstdio> #include<algorithm> #include<math.h> #include<stack> #include<queue> using namespace std; int s[505],t[505]; char res[505],in[505]; bool ok(int i) { if('0'<=res[i]&&res[i]<='9') return true; if('A'<=res[i]&&res[i]<='Z') return true; if('a'<=res[i]&&res[i]<='z') return true; return false; } int main() { int i,j,k,ls,lt,T,a,b;//a:original base,b:new base scanf("%d",&T); while(T--) { scanf("%d%d %s",&a,&b,&in); memset(res,0,sizeof(res)); memset(s,0,sizeof(s)); memset(t,0,sizeof(t)); ls=strlen(in); for(i=0;i<ls;i++) { if(in[i]>='0'&&in[i]<='9') s[ls-i-1]=in[i]-48; else if(in[i]>='A'&&in[i]<='Z') s[ls-i-1]=in[i]-55; else s[ls-i-1]=in[i]-61; } k=ls; s[k]=0; for(lt=0;k;) {//辗转相除 for(i=k;i>=1;i--)//保证s[k]=0 { s[i-1]+=s[i]%b*a;//注意+号,模拟除法 s[i]/=b; } t[lt++]=s[0]%b; s[0]/=b; for(;k>0&&s[k-1]==0;k--); } res[lt]=0;//清零 for(i=lt-1;i>=0;i--) { if(t[i]<=9) res[lt-i-1]=t[i]+48; else if(10<=t[i]&&t[i]<=35) res[lt-i-1]=t[i]+55; else res[lt-i-1]=t[i]+61; //if(!ok(lt-i-1)) //printf("no %d %d/n",t[i],res[lt-i-1]); } printf("%d %s/n%d %s/n/n",a,in,b,res); } return 0; }
相关文章推荐
- POJ 1220 NUMBER BASE CONVERSION JAVA .
- poj 1220 NUMBER BASE CONVERSION(短除法进制转换)
- POJ 1220 NUMBER BASE CONVERSION(高精度进制转换)
- poj 1220 NUMBER BASE CONVERSION 【栈】
- poj1220 NUMBER BASE CONVERSION
- NUMBER BASE CONVERSION POJ - 1220 进制转换/模拟除法
- POJ 1220-NUMBER BASE CONVERSION 任意进制数转换
- poj 1220 NUMBER BASE CONVERSION(字符串处理经典)
- (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)
- POJ 1220 NUMBER BASE CONVERSION
- NUMBER BASE CONVERSION POJ 1220 进制转换模板
- 高精度进制转换 poj 1220 NUMBER BASE CONVERSION
- POJ 1220 NUMBER BASE CONVERSION(高精度--进制转换)
- POJ 1220 NUMBER BASE CONVERSION(较复杂的进制转换)
- poj 1220 NUMBER BASE CONVERSION
- (高精度运算4.7.26)POJ 1220 NUMBER BASE CONVERSION(高精度数的任意进制的转换——方法:ba1----->10进制----->ba2)
- poj 1220 NUMBER BASE CONVERSION
- poj 1220 NUMBER BASE CONVERSION(短除法进制转换)
- POJ 1220 NUMBER BASE CONVERSION 笔记
- POJ 1220 NUMBER BASE CONVERSION