/*
高精度进制转换
把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. SpringBoot17 FastJson配置、Druid配置

    1 FastJson配置 1.1 FastJson基础知识 点击前往 1.2 SpringBoot整合FastJson 点击前往 1.2.1 导入FastJson依赖 <!--fastjson- ...

  2. Python2.7的安装、python3的安装

    >登录python官网下载python2.7的相关版本 python官网链接 >根据平台选择相应的版本 >下载完毕后点击安装即可 >配置环境变量 >安装成功 2 pyth ...

  3. C语言实践 输出100以内的素数

    int main() { int isprime = 1; for (int i = 2; i < 101; i++) { isprime = 1;//要确保每次循环都要把这个值设置为1,不然上 ...

  4. c# 导入c++ dll

    1.类的函数的内联实现 #include "stdafx.h" #include "testdll.h" #include <iostream> # ...

  5. canvas时钟demo

    显示效果如下 源码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  6. [GO]工程管理

    同级目录: 1.分文件编程,多个源文件,必须放在src目录 2.设置GOPATH目录,目录地址不包括src后缀 3.同一个目录,包名必须一样 4.go env查看go相关的环境路径 5.同一个目录,调 ...

  7. Eclipse下Android的NDK开发环境配置

    编辑2016年7月26日——增加了下载网址,修改了一些错误. 摸索了一周,走了很多弯路,磕磕绊绊,总算是弄好了NDK的开发环境,在这里总结一下吧. 一.Android NDK开发环境 首先下载安装JR ...

  8. cmake的一些词的解释

    cmake中一些预定义变量 PROJECT_SOURCE_DIR  工程的根目录 PROJECT_BINARY_DIR    运行cmake命令的目录,通常是${PROJECT_SOURCE_DIR} ...

  9. Android 单位dp和px之间相互转换

    public class DensityUtil { /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context con ...

  10. C# 抽象(3)

    接上章: 抽象类中有抽象方法,那么可不可以有非抽象方法呢? 答案是可以的. abstract class Human { public abstract void Think(); public ab ...