POJ 1220 高精度进制转换
题意:
将一个k进制的高精度数字A转换成m进制数B(k,m<=62)
分析:
我本来想把数字先转换成10进制,然后再转换成m进制,觉得太麻烦,于是乎问WZC神犇怎样做简单
他是这样做的:
应用“除n取余法”,我们直接短除A,除数是m
还是举例说明吧:7进制下的35,转换成2进制,就用3除以2,商是1,余数是1
将1*7再加上第二位的5当成第二个数,继续重复以上步骤
说白了了就和10进制的短除法一样,只不过我们在对于每一位短除的处理上采用的是7进制(处理十进制的时候不都是将余数*10加到下一位么~)
这样,这个题目完美解决了~
PS:代码里写了好多没有用的函数,忽略就好~
友情提示:注意将0转换后是否有输出
我在这里wa了好久。。。
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <iostream> 5 6 #define N 10000 7 8 using namespace std; 9 10 char cao[1000]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"}; 11 12 struct BIGN 13 { 14 int a[N]; 15 }ans; 16 17 int n,p,mod[N],hash[N],m,tt; 18 char s[10000]; 19 20 inline void prt(BIGN &a) 21 { 22 for(int i=a.a[0];i>=1;i--) printf("%d ",a.a[i]); 23 puts(""); 24 } 25 26 inline BIGN operator %(BIGN a,int md) 27 { 28 BIGN c; 29 memset(c.a,0,sizeof c.a); 30 c.a[0]=a.a[0]; 31 int ys=0; 32 for(int i=a.a[0];i>=1;i--) 33 { 34 ys=a.a[i]+ys*n; 35 c.a[i]=ys/md; 36 ys%=md; 37 } 38 mod[++p]=ys; 39 while(c.a[0]>1&&c.a[c.a[0]]==0) c.a[0]--; 40 return c; 41 } 42 43 void prev() 44 { 45 for(int i=0;i<62;i++) hash[cao[i]]=i; 46 } 47 48 void change() 49 { 50 memset(ans.a,0,sizeof ans.a); 51 ans.a[0]=strlen(s+1); 52 for(int i=1;i<=ans.a[0];i++) ans.a[i]=hash[s[ans.a[0]-i+1]]; 53 } 54 55 inline bool check(BIGN &c) 56 { 57 if(c.a[0]==1&&c.a[1]==0) return false; 58 else return true; 59 } 60 61 void go() 62 { 63 scanf("%d%d%s",&n,&m,s+1); 64 printf("%d %s\n%d ",n,s+1,m); 65 change(); 66 p=0; 67 while(check(ans)) ans=ans%m; 68 if(p) while(p) printf("%c",cao[mod[p--]]); 69 else printf("0"); 70 puts(""); 71 puts(""); 72 } 73 74 int main() 75 { 76 prev(); 77 scanf("%d",&tt); 78 while(tt--) go(); 79 system("pause"); 80 return 0; 81 }
转载于:https://www.cnblogs.com/proverbs/archive/2012/10/11/2720376.html
POJ 1220 高精度进制转换相关推荐
- poj1220:高精度进制转换模板题
今天撸3708 一直奇怪的re 就先放下了,写这个题的过程中学习了一个高精度进制转换,用这个模板写了1220 记录一下: #include <iostream> #include < ...
- POJ1220(高精度进制转换)
题目:NUMBER BASE CONVERSION 就是后面的数字以a进制的形式给出,要求转化为b进制输出. #include <stdio.h> #include <string. ...
- 【题解】【AcWing】3374. 进制转换2
3374. 进制转换2 原题传送:AcWing 3374. 进制转换2 将 MMM 进制的数 XXX 转换为 NNN 进制的数输出. 输入格式 第一行包括两个整数: MMM 和 NNN . 第二行包含 ...
- 进制转换 (清华大学考研机试)
文章目录 题目 AC代码 题目 本题链接:进制转换 (清华大学考研机试) 本博客给出本题截图: AC代码 代码解释:高精度 + 进制转换,高精度详见:高精度运算,关于高精度的模板,详见:高精度算法模板 ...
- POJ - 1220 NUMBER BASE CONVERSION(高精度运算+进制转换+模拟)
题目链接:点击查看 题目大意:给出两个进制x和y,再给出一个x进制下的数num,求num转换为y进制后的答案 题目分析:直接套模板就行了,进制转换没什么好说的,直接模拟,这个题开了加速外挂只能优化几十 ...
- 【EOJ Monthly 2019.02 - D】进制转换(思维,取模,高精度大数)
题干: 单测试点时限: 2.0 秒 内存限制: 256 MB "他觉得一个人奋斗更轻松自在.跟没有干劲的人在一起厮混,只会徒增压力." QQ 小方决定一个人研究研究进制转换. 很快 ...
- 试解PTA《20211122-函数基础练习》,涉及 高精度加法 和 10进制转换成2-16进制问题,有需要的同学来看看吧;
目录 一.前言 二.例题部分 2.1.进制转换 2.1.1.题解1 2.1.2.题解2 2.2. 函数返回一个整数的反序数 (20 分) 2.2.2 题解 2.3. 大整数A+B (10 分) 2.3 ...
- 【进制转换】负进制转换 多进制转换
1.负进制转换 洛谷P1017 进制转换 负进制的转换和正进制的转换雷同,都是用短除取余法,这里要保证余数都要是正数才行: 要想让本来余数是负数变为正数,其实很好操作,就直接让商+1,余数-(相应的进 ...
- 洛谷(小鱼的数字游戏、进制转换、Cableway、Quasi Binary)
小鱼的数字游戏: 代码: #include<iostream> #include<cstring> #include<algorithm> using namesp ...
- php 64进制转16进制,PHP进制转换[实现2、8、16、36、64进制至10进制相互转换]
$mtime1= explode(" ", microtime()); $startTime= $mtime1[0] + $mtime1[1];?> 进制转换 2 8 10 ...
最新文章
- c语言函数传参时候的类型强制装换
- 大数据最清楚王宝强离婚事件到底有多热!
- 小米做手机是真不赚钱,米粉要支持请多容忍广告
- apache AllowEncodedSlashes 允许URL中对路径分隔符进行编码
- uvm 形式验证_一种基于UVM的总线验证方法与流程
- Flutter中Row中的子控件左右两端对齐
- C#温故而知新学习系列之XML编程—Xml写入器XmlWriter类(三)
- 联想杯 - Gentle Jena(单调栈)
- Python getattr() 函数==>获取一个对象的属性值
- java this.name= name_thread(this, ThreadName)对于Java中这个语句,this是什么?
- GitHub使用.md
- 【Kernel Method】Kernel Method核方法介绍
- SpringApplication#run⽅法第5步,打印banner(四)
- 信号处理之CFAR恒虚警检测
- Maximo学习:创建表和应用程序
- HDU 6627 equation(模拟,分类讨论)
- 口碑最好的国产蓝牙耳机,2021国产最好用的蓝牙耳机
- WriteError Resulting document after update is larger than 16777216
- 烤仔观察 | 哈耶克最后的预言
- Maven的爱恨情仇
热门文章
- 算法与数据结构1800题 之字符串(一)
- oracle中DMP文件导入导出例子详解
- 2012-12-17 → 2013-01-20 周总结:五周没写周总结了,今天来总结下
- 【已解决】 c8812在eclipse上调试打不出log来?求帮助如何解决?!!!
- ORB-SLAM 解读(五) 地图点投影进行特征匹配
- 分享一个 pycharm 专业版的永久使用方法
- 查询各分类中最大自增ID
- ASP.NET with C#生成验证码的过程
- layui表单元素的radio单选框问题
- Linux学习笔记(二十三)shell介绍、history命令历史、命令补全和别名、通配符、...