poj1220------高精度进制转换模板
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxs = 1000;
int oldBase,newBase;//原进制,新进制
char origin[maxs];//原串
int str[maxs],ans[maxs],goal[maxs];//被除数,除数,结果数组 //将单个字符转变为数字
int getNum(char ch)
{
if(ch>='0'&&ch<='9')//数字
return ch-'0';
if(ch>='A'&&ch<='Z') //大写字母
return ch-'A'+10;
return ch-'a'+36;//小写字母
}
//将数字转变为字符
char getchar(int num)
{
if(num>=0&&num<=9)
return num+'0';
if(num>=10&&num<=35)
return num-10+'A';
return num-36+'a';
}
void trans()
{
memset(goal,0,sizeof(goal));//初始化结果数组
//初始化,把输入的字符串转变为对应的数字
int len = strlen(origin);
str[0] = len; //str[0]存储字符串的长度
for(int i=0;i<len;i++)
str[i+1]=getNum(origin[i]);
while(str[0]>=1)//被除数还没有为0,继续短除法
{
memset(ans,0,sizeof(ans));//ans[0]代表商的位数
int y=0,i;//余数
for(i=1;i<=str[0];i++)//手动模拟除法
{
y=y*oldBase+str[i];
ans[++ans[0]]=y/newBase;
y=y%newBase;
}
goal[++goal[0]]=y;//第一轮短除法结束,得到的余数 //得到第二轮短除法的被除数,也就是上一轮的商,但是要去除前导0
i=1;
while(i<=ans[0]&&ans[i]==0)
i++;
memset(str,0,sizeof(str));
for(;i<=ans[0];i++)
str[++str[0]]=ans[i];
}
//输出结果
for(int i=goal[0];i>=1;i--)
printf("%c",getchar(goal[i]));
printf("\n");
}
int main()
{
freopen("in.txt","r",stdin);
int T;
cin>>T;
while(T--)
{
scanf("%d%d",&oldBase,&newBase);
scanf("%s",origin);
printf("%d %s\n%d ",oldBase,origin,newBase);
trans();
printf("\n");
} }
poj1220------高精度进制转换模板的更多相关文章
- poj1220:高精度进制转换模板题
今天撸3708 一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...
- 高精度的N进制转换模板(转K神)
/* 高精度进制转换 把oldBase 进制的数转化为newBase 进制的数输出. 调用方法,输入str, oldBase newBase. change(); solve(); output(); ...
- 高精度进制转换(poj1220)
常规短除法原理 高精度进制转换是对于特别大的数字来说的,当数字特别大时,难以进行除法和取余的操作,此时通过字符串模拟的办法可以解决. #include <iostream> #includ ...
- java高精度进制转换
POJ1131 由于本题只有小数部分(整数部分均为0),故在进制转换的之后只能自己手写转换方法了. 8进制转换10进制的方法为,以0.75为例,应是7*8^-1 + 5*8^-2.所以呢,可以 ...
- poj3708:函数式化简+高精度进制转换+同余方程组
题目大意 给定一个函数 找出满足条件 等于 k 的最小的x m,k,d已知 其中 m,k 很大需要使用高精度存储 思路: 对 函数f(m)进行化简 ,令t=ceil( log(d,m) ) 可以得 ...
- POJ 1220 高精度/进制转换
n进制转m进制,虽然知道短除法但是还是不太理解,看了代码理解一些了: 记住这个就好了: for(int k=0;l; ){ for(int i=l ; i>=1 ; i--){ num[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(短除法实现任意进制转换)
题目链接:https://vjudge.net/problem/POJ-1220 题意:给定a进制的大数s,将其转换为b进制.其中2<=a,b<=62. 题意:一般进制转换是以10进制为中 ...
随机推荐
- mysql简单实现查询结果添加序列号的方法
方法1: SELECT @rownum :=@rownum + 1 AS rownum, t.* FROM integral_system_user t, (SELECT @rownum := 0) ...
- 757A Gotta Catch Em' All!
A. Gotta Catch Em' All! time limit per test 1 second memory limit per test 256 megabytes input stand ...
- Yandex插件使用说明——Slager_Z
Yandex插件使用说明——Slager_Z 操作步骤: 1.1使用Chrome浏览器安装插件 / 1.2使用crx格式文件 2. 改装成Yandex可使用文件 3. 通过Yandex ...
- powerdesigner 生成表备注
第一步: 操作:Database-->Edit Current DBMS,进入下图页面, 然后分别将 Script-->Objects-->Table-->TableComme ...
- Reverse string using recursion
On-Site Question 3 - SOLUTION Question Given a string, write a function that uses recursion to rever ...
- 2018.10.14 loj#6003. 「网络流 24 题」魔术球(最大流)
传送门 网络流好题. 这道题可以动态建图. 不难想到把每个球iii都拆点成i1i_1i1和i2i_2i2,每次连边(s,i1),(i2,t)(s,i_1),(i_2,t)(s,i1),(i2, ...
- 2018.07.17 HAOI2016 找相同字符(SAM)
传送门 就是给两个字符串,让你求公共字串的个数. 本来大佬们都是用的广义后缀自动机,但我感觉后缀自动机已经可以做这道题了.我们对其中一个字串建出后缀自动机,然后用另外一个后缀自动机在上面统计贡献即可. ...
- HDU 3361 ASCII (水题,不说什么了)
题意:给你n个十进制数,让你输出相应的ASCII. 析:无,没说的,直接输出就好了. 代码如下: #include <iostream> #include <cstdio> # ...
- Spring 、 CXF 整合 swagger 【试炼】
官网:http://swagger.io/ http://swagger.io/specification/ 上面就是描述了什么是 SWAGGER OBJECT 2. 如何用jax-rs 注解方式产生 ...
- 《Forward团队-爬虫豆瓣top250项目-设计文档》
成员:马壮,李志宇,刘子轩,年光宇,邢云淇,张良 设计方案: 1.能分析HTML语言: 2.提取重要数据,并保存为文本文档: 3.用PY代码调取文本文档的数据: 4.编写提取部分数据的python代码 ...