/*
高精度进制转换
把oldBase 进制的数转化为newBase 进制的数输出。
调用方法,输入str, oldBase newBase.
change();
solve();
output();
也可以修改output(),使符合要求,或者存入另外一个字符数组,备用
*/
#include<stdio.h>
#include<string.h>
#defien MAXSIZE
char str[MAXSIZE];//输入字符串
int start[MAXSIZE],ans[MAXSIZE],res[MAXSIZE];//被除数,商,余数
int oleBasw,newBase;//转换前后的进制 //单个字符得到数字
int getNum(char c)//这里进制字符是先数字,后大写字母,后小写字母的
{
if(c>=''&&c<='') return c-'';//数字
if(c>='A'&&c>='Z') return c-'A'+;//大写字母
return c-'a'+;//小写字母
}
//数字得到字符
char getChar(int i)
{
if(i>=&&i<=)return i+'';
if(i>=&&i<=)return i-''+'A';
return i-+'a';
}
void change()//把输入的字符串的各个数位还原为数字形式
{
int i;
start[]=strlen(str);//数组的0位存的是数组长度
for(i=;i<=start[];i++)
start[i]=getNum(str[i-]);
}
void solve()
{
memset(res,,sizeof(res));//余数位初始化为空
int y,i,j;
while(start[]>=)
{
y=;i=;
ans[]=start[];
while(i<=start[])
{
y=y*oldBase+start[i];
ans[i++]=y/newBase;
y%=newBase;
}
res[++res[]]=y;//这一轮得到的余数
i=;//找下一轮商的起始处,去掉前面的0
while(i<=ans[]&&ans[i]==) i++;
memset(start,,sizeof(start));
for(j=i;j<ans[];j++)
start[++start[]]=ans[j];
memset(ans,,sizeof(ans));
}
}
void output()//从高位到低位逆序输出
{
int i;
for(i=res[];i>=;i--)
printf("%d",getChar(res[i]));
printf("\n");
}

高精度的N进制转换模板(转K神)的更多相关文章

  1. poj1220:高精度进制转换模板题

    今天撸3708  一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...

  2. poj1220------高精度进制转换模板

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; const i ...

  3. SHU 414 - 字符串进制转换

    题目链接:http://acmoj.shu.edu.cn/problem/414/ 很咸鱼的网上拉了个进制转换模板过来,因为数组开的太小一直WA,后来一气之下MAXN开到1e5,真是蓝瘦…… 后来实在 ...

  4. poj1220 (高精度任意进制转换)

    http://poj.org/problem?id=1220 高精度任意进制转换 代码是从discuss里找到的,据说是maigo神牛写的. 超精简!! 我自己第一写的时候,还把n进制先转成10进制, ...

  5. 高精度进制转换(poj1220)

    常规短除法原理 高精度进制转换是对于特别大的数字来说的,当数字特别大时,难以进行除法和取余的操作,此时通过字符串模拟的办法可以解决. #include <iostream> #includ ...

  6. java高精度进制转换

    POJ1131   由于本题只有小数部分(整数部分均为0),故在进制转换的之后只能自己手写转换方法了.   8进制转换10进制的方法为,以0.75为例,应是7*8^-1 + 5*8^-2.所以呢,可以 ...

  7. poj1220(短除法实现任意进制转换)

    题目链接:https://vjudge.net/problem/POJ-1220 题意:给定a进制的大数s,将其转换为b进制.其中2<=a,b<=62. 题意:一般进制转换是以10进制为中 ...

  8. PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]

    自己写了一个PHP进制转换程序,一个类吧,第一次写这个东东,写这个东东,在处理文本文件时能用得到.   可以实现: 10进制转换2.8.16.36.62进制2.8.16.36.62进制转换10进制 有 ...

  9. python27期day03:字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换、作业题。

    1.%s: a = "我是新力,我喜欢:%s,我钟爱:%s"b = a%("开车","唱跳rap")print(b)2.整型: 整数在Pyt ...

随机推荐

  1. 新装的Ubuntu没有ipconfig和ping命令

    新装的Ubuntu或者Docker pull的Ubuntu镜像创建的容器没有ipconfig和ping命令 解决办法: 1.apt-get update 2.安装和ifconfig有关的工具 apt ...

  2. SqlServer------范式小结

    说明:大多数初学者对于关系数据库中的范式很是头疼,我本人也是,所以今天又看了视频,总结了一下内容,尽量语言通俗易懂,少用专业术语以及概念. 首先要理解几个键值. 超键:在关系模式中,能唯一标识元组的属 ...

  3. javac老提示无效的标记

    加上-cp libs/*后,就开始提示无效的标记,搞了半天,似乎是shell展开的问题,估计是把后面的jar文件当源文件了? 加上引号就行了-cp "libs/*",不让shell ...

  4. combogrid change check multiple

    this.SetDict = function (obj, dicType, multiple, Ischeckbox, callback, change) { obj.combogrid({ pan ...

  5. C# winform中窗口的关闭按钮的隐藏与禁用的几种方式说明

    首先说一句:不存任何一种方式可以单独隐藏关闭按钮,隐藏的话会把所有最大化,最小化,帮助,关闭按钮都给隐藏掉. 第一 种:   禁用窗口上部的关闭按钮 方法一:在Form1的窗口程序中desigener ...

  6. VirtualBox安装增强功能(Linux)

    我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers #yum install kernel-devel ...

  7. fork()的写时复制技术(转载)

    本文转载自http://www.cnblogs.com/wuchanming/p/4495479.html,为了方便以后查看... 写时复制技术最初产生于Unix系统,用于实现一种傻瓜式的进程创建:当 ...

  8. 转 XlsReadWriteII 的博文(自留参考)

    如何使用XlsReadWriteII在Delphi中读取Excel文件 XLSReadWriteII v5.20.01a for Delphi XE5 x32下载地址: http://download ...

  9. vee-validate表单校验的基本使用

    今天主要记录一下用vee-validate来进行表单校验的几个基本使用.包括最基础的必填和长度校验:异步请求服务的校验(重名校验),还有延迟校验.如何引入等就不在这里赘述了,直接进入主题. 1.必填和 ...

  10. WinForm 中使用 Action 子线程对主线程 控制进行访问

    /// <summary> /// 开启新线程执行 /// </summary> /// <param name="sender"></p ...