[NOIP2000 提高组] 进制转换

news2025/1/15 6:26:01

[NOIP2000 提高组] 进制转换

题目描述

  我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置为指数,以 10为底数的幂之和的形式。例如 123 可表示为 10^2+2*10^1+3*10^0 这样的形式。

  与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置为指数,以 2 为底数的幂之和的形式。  

  一般说来,任何一个正整数 R 或一个负整数 -R 都可以被选来作为一个数制系统的基数。如果是以 R 或 -R 为基数,则需要用到的数码为 0,1,....R-1。  

例如当 R=7 时,所需用到的数码是 0,1,2,3,4,5,6,这与其是 R 或 -R 无关。如果作为基数的数绝对值超过 10,则为了表示这些数码,通常使用英文字母来表示那些大于 9 的数码。例如对 16 进制数来说,用 A表示 10,用 B表示 11,用 C 表示 12,以此类推。

在负进制数中是用 -R 作为基数,例如 -15(十进制)相当于(110001)_{-2} (-2进制),并且它可以被表示为 2 的幂级数的和数:

(110001)_{-2}=1* (-2)^5+1* (-2)^4+0* (-2)^3+0*(-2)^2+0*(-2)^1 +1*(-2)^0

设计一个程序,读入一个十进制数和一个负进制数的基数, 并将此十进制数转换为此负进制下的数。

输入格式

输入的每行有两个输入数据。

第一个是十进制数 $n$。
第二个是负进制数的基数 $-R$。

输出格式

输出此负进制数及其基数,若此基数超过 $10$,则参照 $16$ 进制的方式处理。

样例 #1

样例输入 #1

30000 -2

样例输出 #1

30000=11011010101110000(base-2)

样例 #2

样例输入 #2

-20000 -2

样例输出 #2

-20000=1111011000100000(base-2)

样例 #3

样例输入 #3

28800 -16

样例输出 #3

28800=19180(base-16)

样例 #4

样例输入 #4

-25000 -16

样例输出 #4

-25000=7FB8(base-16)

提示:

【数据范围】  

对于 100\% 的数据,-20 <= R <= -2,|n| <= 37336。

NOIp2000提高组第一题

思路:

我们都知道,首先按照10进制转成n进制的做法:

对这个数不断除以n,将余数一一存储,最后倒序输出。

那么有一个问题,此处原数和进制数都有可能为负数,也就意味着余数可能为负数,那么我们不可能输出像-100-100这种数。

那么怎么把负数转成正数?

我们基本思路分两点:

  1. 把负数转成符合n进制余数规律的正数
  2. 让转得的正数符合余数的计算模式

  1. 把负数转成符合n进制余数规律的正数

我们先来探讨一下二进制余数的规律:

01234567
01010101
那么规律就是0101010101……

那么我们只需让负数余数规律也为010101……,就解决了。

我们发现,每一组数,他们对应的间隔区间内的数是相等的。那么我们只需跳到它前面一个区间的数即可,因为区间长度为-m,(m为进制)。那么就转换成:

j-=m(j为原先算出来的负数,m为进制数)


  1. 让转得的正数符合余数的计算模式

光转成正数还不够,因为还不符合余数的计算。

众所周知,我们令n为被除数,m为除数和进制数,a为商,j为余数,可以得到:

n/m=a

n-a*m=j

根据我们刚刚推得的算法:j-=m,那么此时方程2两端同时减去m,得

n-a*m-m=j-m

提公因式,得

n-(a+1)*m=j-m

但我们还要让j-m符合余数计算模式,即符合n-a*m=j的形式。

显然,此时a=a+1正好符合n-a*m=j的形式。所以:

n++(此时n已经/=m)

完整代码:

#include <iostream>
using namespace std;
int n,m;
char a[100001];
int l=0;
int main(){
	int i;
	cin>>n>>m;
	cout<<n<<"=";
	while(n!=0){
		int j=n%m;
		n/=m;//十进制转n进制
		if(j<0)j-=m,n++;//讲解的点
		if(j<10)a[++l]=(char)(j+48);
		else a[++l]=(char)((j-10)+'A');//两种不同的转法
	}
	for(i=l;i>=1;i--)cout<<a[i];//倒序输出
	cout<<"(base"<<m<<")"<<endl;
}

总结:

  该题其实就靠数学功底来推,并不算是很难。

题目链接:

[NOIP2000 提高组] 进制转换 - 洛谷https://www.luogu.com.cn/problem/P1017 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

运行时内存数据区之执行引擎(二)

JIT编译器 第一种是将源代码编译成字节码文件&#xff0c;然后在运行时通过解释器将字节码文件转为机器码执行。 第二种是编译执行&#xff08;直接编译成机器码&#xff09;。现代虚拟机为了提高执行效率&#xff0c;会使用即时编译技术(JIT,Just In Time)将方法编译成机器 …

北邮22信通:(13)二叉树 书上重要知识点补充 例4.3 统计结点总数 深度和叶子结点数

北邮22信通一枚~ 跟随课程进度每周更新数据结构与算法的代码和文章 持续关注作者 解锁更多邮苑信通专属代码~ 上一篇文章&#xff1a; 下一篇文章&#xff1a; 目录 一.统计结点总个数 二.统计二叉树深度 三.统计叶子结点总数 四.完整代码 4.1测试int存储类型&…

网络原理基础(认识IP地址、子网掩码、端口号、协议、五元组)

文章目录 前言一、网络通信基础1、IP地址2、子网掩码3、端口号4、协议5、五元组 二、协议基础知识1.协议分层2.OSI七层模型3、TCP/IP五层(或四层)模型4、网络设备所在分层5、封装和分用 总结 前言 网络互连的目的是进行网络通信&#xff0c;也即是网络数据传输&#xff0c;更具…

Mac/Linux系统idea启动springboot项目慢;Oracle数据库连接:ORA-21561: OID generation failed

Mac/Linux系统idea启动springboot项目慢;Oracle数据库连接:ORA-21561: OID generation failed 解决方案&#xff1a; 1、终点输入localhost查看&#xff1b;发现我这里是local 2、终点输入cat /etc/hosts查看配置&#xff1b; hosts文件中127.0.0.1的映射是&#xff1a;127…

react 之 useState

参考&#xff1a;https://blog.csdn.net/Ljwen_/article/details/125319191 一、基本使用 useState是 react 提供的一个定义响应式变量的 hook 函数&#xff0c;基本语法如下&#xff1a; const [count, setCount] useState(initialCount)它返回一个状态和一个修改状态的方…

R语言ggplot2 | 绘制随机森林重要性+相关性热图

&#x1f4cb;文章目录 原图复现准备数据集及数据处理构建不同分类随机森林模型的并行计算绘制随机森林变量重要性柱状图计算数据集的相关性热图可视化合并随机森林重要性和热图 附上所有代码 在文献中&#xff0c;我们经常遇到随机森林和相关性热图的组合图片(下图)&#xff0…

LeetCode热题HOT100:76. 最小覆盖子串,84.柱状图中最大的矩形、96. 不同的二叉搜索树

LeetCode 热题 HOT 100 76. 最小覆盖子串 题目&#xff1a;给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字…

Ubuntu18.04获取root权限并用root用户登录

写在前面&#xff1a;以下步骤中需要在终端输入命令&#xff0c;电脑端查看博客的朋友可以直接复制粘贴到终端&#xff0c;手机端查看的朋友请注意命令里面的空格是必须的&#xff0c;否则运行会出错。 1.为root设置初始密码 &#xff08;1&#xff09;登录系统&#xff0c;打…

【unity实战】随机地下城生成1

先看看最终效果 导入素材 导入房间图片素材,配置图片信息信息 点击sprite Editor,开始切割图片 随机创建基本房间 已一个白底图片模拟房间预设体 思路:建立一个空的 GameObject 用来做创建房间的点,设置坐标(0,0,0)。每创建1个房间之后,随机在上、下、右判断是否有…

python以及PyCharm工具的环境安装与配置

这里以Windows为例 Python的安装 当然是到Python官网下载咯&#xff0c;https://www.python.org/downloads/点我直达&#xff0c;如图&#xff1a; 可以下载最新版本&#xff0c;可以下拉找到之前特定的版本安装&#xff0c;如图&#xff1a; 这里先择的是最新版的进行安装…

leetcode每日一题:链表专题篇第一期(1/2)

&#x1f61a;一个不甘平凡的普通人&#xff0c;日更算法学习和打卡&#xff0c;期待您的关注和认可&#xff0c;陪您一起学习打卡&#xff01;&#xff01;&#xff01;&#x1f618;&#x1f618;&#x1f618; &#x1f917;专栏&#xff1a;每日算法学习 &#x1f4ac;个人…

现在备考2023年5月软考网络工程师时间够吗?

距离2023年5月软考还有1个多月的时间&#xff0c;备考网络工程师的时间是够的&#xff0c;以下是一些备考方法&#xff1a; 1.了解考试内容 在你开始学习考试之前&#xff0c;了解考试的形式和内容是很重要的。这将帮助你把注意力集中在最有可能被测试的领域。你应该复习考试…

Gartner Magic Quadrant for SD-WAN 2022 (Gartner 魔力象限:软件定义广域网 2022)

Gartner 魔力象限&#xff1a;SD-WAN 2022 请访问原文链接&#xff1a;https://sysin.org/blog/gartner-magic-quadrant-sd-wan-2022/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org Gartner 魔力象限&#xff1a;SD-WAN 2022…

ChatGPT最强竞争对手,无需魔法,直接使用

无需科学上网&#xff0c;无需加入Waitlist&#xff0c;免费使用&#xff0c;没有高峰限制&#xff0c;而且效果媲美ChatGPT&#xff01; ChatGPT 的最强竞争对手Claude!!! Claude 是由Anthropic这家人工智能公司开发出来的&#xff0c;其联合创始人Dario Amodei曾经担任OpenAI…

K8S使用持久化卷存储到NFS(NAS盘)

参考文章&#xff1a;K8S-v1.20中使用PVC持久卷 - 知乎 Persistent Volumes&#xff1a;PV是持久化卷&#xff0c;系统管理员设置的存储&#xff0c;它是群集的一部分&#xff0c;是一种资源&#xff0c;所以它有独立于Pod的生命周期 Persistent Volume Claim&#xff1a;PVC…

抽象同步队列AbstractQueuedSynchronizer(AQS)简要理解

抽象同步队列AbstractQueuedSynchronizer AQS 简要理解 1 什么是AQS2 AQS结构2.1 同步状态2.2 CLH队列2.3 Node 3 AQS流程 https://zhuanlan.zhihu.com/p/370501087 1 什么是AQS AQS&#xff08;AbstractQueuedSynchronizer&#xff09;是 Java 中实现锁和同步器的基础设施&am…

el-input-number中添加单位(css版)

优点: 通过css添加,非常便捷和简单 例如此处,需要添加一个分钟单位 <el-input-number class"input-number" v-model"value" :step"5" :min"30" ></el-input-number> //css <style lang"scss"> .input-nu…

node项目(一) koa脚手架的搭建

一、koa 安装 // 安装koa npm install -g koa-generator // 创建项目 koa2 项目名称 当出现这个框的时候安装完毕 之后就是进入目录文件&#xff0c;根据package.json执行即可 二、出现问题 汇总 问题一&#xff1a;koa-generator安装失败 没有出现koa-generator安装成功 …

分类预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入分类预测

分类预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入分类预测 目录 分类预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 基于贝叶斯(bayes)优化卷积神经网络-门控循环单元(CN…

4月第2周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年4月10日-4月16日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B…