加载中…
正文 字体大小:

高精度的进制转换算法

(2011-11-08 23:10:01)
标签:

杂谈

分类: ACM

算法名称:高精度进制转换(POJ1220)

算法类别:数据结构

算法要求进制范围和数字位数在规定范围内

算法描述:以字符串方式输入数字,转换为ASCII码存入整形数组中,对整形数组从高位到低位进行取余运算,当高位为0,既ASCII=48时长度减少一,当长度为0时循环结束,再将ASCII码转换为字符,输出

算法复杂度:时间复杂度-----O(n方)

算法优点:可以实现2~62进制的任意转换,具有普遍性

算法缺点:数据范围有限制

算法适用情景:进制间的相互转换

算法实现代码(来自MAIGO):

#include<stdio.h>
#include<string.h>
int i,l,k,a,b,T,t[555],A[555];
char s[555],d[555];
int main(){
 for(scanf("%d",&T);T--;){
  scanf("%d%d%s",&a,&b,s);
  for(k=i=strlen(s);0<i--;)t[k-1-i]=s[i]-(s[i]<58?48:s[i]<97?55:61);
  for(l=0;k;){
   for(i=k;1<i--;){
    t[i-1]+=t[i]%b*a;
    t[i]/=b;
   }
   A[l++]=t[0]%b;
   t[0]/=b;//主语句段
   for(;0<k&&!t[k-1];k--);
  }
  for(d[l]=i=0;i<l;i++)d[l-1-i]=A[i]+(A[i]<10?48:A[i]<36?55:61);
  printf("%d %s\n%d %s\n\n",a,s,b,d);
 }
 return 0;
}

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有