高精度的N进制转换模板(转K神)
/*
高精度进制转换
把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神)的更多相关文章
- poj1220:高精度进制转换模板题
今天撸3708 一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...
- poj1220------高精度进制转换模板
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const i ...
- SHU 414 - 字符串进制转换
题目链接:http://acmoj.shu.edu.cn/problem/414/ 很咸鱼的网上拉了个进制转换模板过来,因为数组开的太小一直WA,后来一气之下MAXN开到1e5,真是蓝瘦…… 后来实在 ...
- poj1220 (高精度任意进制转换)
http://poj.org/problem?id=1220 高精度任意进制转换 代码是从discuss里找到的,据说是maigo神牛写的. 超精简!! 我自己第一写的时候,还把n进制先转成10进制, ...
- 高精度进制转换(poj1220)
常规短除法原理 高精度进制转换是对于特别大的数字来说的,当数字特别大时,难以进行除法和取余的操作,此时通过字符串模拟的办法可以解决. #include <iostream> #includ ...
- java高精度进制转换
POJ1131 由于本题只有小数部分(整数部分均为0),故在进制转换的之后只能自己手写转换方法了. 8进制转换10进制的方法为,以0.75为例,应是7*8^-1 + 5*8^-2.所以呢,可以 ...
- poj1220(短除法实现任意进制转换)
题目链接:https://vjudge.net/problem/POJ-1220 题意:给定a进制的大数s,将其转换为b进制.其中2<=a,b<=62. 题意:一般进制转换是以10进制为中 ...
- PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]
自己写了一个PHP进制转换程序,一个类吧,第一次写这个东东,写这个东东,在处理文本文件时能用得到. 可以实现: 10进制转换2.8.16.36.62进制2.8.16.36.62进制转换10进制 有 ...
- python27期day03:字符串详解:整型、可变数据类型和不可变数据类型、进制转换、索引、切片、步长、字符串方法、进制转换、作业题。
1.%s: a = "我是新力,我喜欢:%s,我钟爱:%s"b = a%("开车","唱跳rap")print(b)2.整型: 整数在Pyt ...
随机推荐
- OpenCV 2.4.13 installed in Ubuntu 14 and CMakeLists Demo
1. 配置编译器环境 [compiler] sudo apt-get install build-essential 2. 安装OpenCV的依赖包 [required] -dev pkg-confi ...
- 用TCGA数据库分析癌症和癌旁组织的表达差异
上周收到一条求助信息:“如何用TCGA数据库分析LINC00152在卵巢癌与正常组织的的表达差异?” 所以以这个题目为记录分析过程如下: 一.下载数据 a)进入网站https://cancergeno ...
- 20169219 Nmap扫描实验
提交用 namp 对Windows 靶机,SEED靶机,Linux靶机的扫描的命令和结果进行截图 一.首先分析Linux靶机Metasploitable 扫描Metasploitableb靶机 扫描M ...
- c# .NET开发邮件发送功能的全面教程(含邮件组件源码)
http://www.cnblogs.com/heyuquan/p/net-batch-mail-send-async.html
- SQL聚集索引和非聚集索引的区别
其实对于非专业的数据库操作人员来讲,例如软件开发人员,在很大程度上都搞不清楚数据库索引的一些基本知识,有些是知其一不知其二,或者是知其然不知其所以然.造成这种情况的主要原因我觉的是行业原因,有很多公司 ...
- poj3080 Blue Jeans(暴枚+kmp)
Description The Genographic Project is a research partnership between IBM and The National Geographi ...
- 多个fragment中重叠问题的解决方法
这个方法适用性有限. 我的是一个mainActivity,然后下部四个按钮,点击时先隐藏所有的fragment,然后再new一个新的出来,如果存在,则直接显示出来,看上去一切都没有问题. 但是通过fr ...
- angular 中间人模式
import { Component, OnInit, EventEmitter, Output } from '@angular/core'; @Component({ selector: 'app ...
- WPF MultiSelect模式下ListBox 实现多个ListBoxItem拖拽
WPF 的ListBox不支持很多常见的用户习惯,如在Explorer中用鼠标可以选择多项Item,并且点击已经选择的Item,按住鼠标左键可以将所有已选择Item拖拽到指定的位置.本文简单的实现了这 ...
- VSCODE 针对调试C语言时一闪而过解决办法
针对调试C语言时一闪而过解决办法 前提: 已经按照 C/C++ 已经安装 MINGW(并配置完成) 原因: 主要是因为tasks的配置没有写对 解决办法: tasks.json { // See h ...