进制转换 (洛谷 P1017P1017P1017题)

题解来了,如果有错尽管批评指正,我会努力修改的首先就是我们一点都不可爱的题目传送门了,接下来是枯燥的题目描述,收揽的同学可以继续往下看,如果想先尝试一下,可以先点蓝色的字,然后做一下,如果做对了,恭喜你,你就不用看了,如果做错了或者没做,那么就看一下吧

题目描述

我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置为指数,以101010为底数的幂之和的形式.例如123123123可表示为1×102+2×101+3×1001 \times 10^2+2\times 10^1+3\times 10^01×102+2×101+3×100这样的形式.

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

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

例如当R=7R=7R=7时,所需用到的数码是0,1,2,3,4,5,60,1,2,3,4,5,60,1,2,3,4,5,6,这与其是RRR或−R-R−R无关.如果作为基数的数绝对值超过101010,则为了表示这些数码,通常使用英文字母来表示那些大于999的数码.例如对161616进制数来说,用AAA表示101010,用BBB表示111111,用CCC表示121212,以此类推.

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

110001=1×(−2)5+1×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+1×(−2)0110001=1\times (-2)^5+1\times (-2)^4+0\times (-2)^3+0\times (-2)^2+0\times (-2)^1 +1\times (-2)^0110001=1×(−2)5+1×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+1×(−2)0

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

输入输出格式

输入格式

输入的每行有两个输入数据。
第一个是十进制数nnn.
第二个是负进制数的基数−R-R−R.

输出格式

输出此负进制数及其基数,若此基数超过101010,则参照161616进制的方式处理.

输入输出样例

输入样例#1\#1#1

30000 -2

输出样例#1\#1#1

30000=11011010101110000(base-2)

输入样例#2\#2#2

-20000 -2

输出样例#2\#2#2

-20000=1111011000100000(base-2)

输入样例#3\#3#3

28800 -16

输出样例#3\#3#3

28800=19180(base-16)

输入样例#4\#4#4

-25000 -16

输出样例#4\#4#4

-25000=7FB8(base-16)

说明

数据范围:

对于100%100\%100%的数据,−20≤R≤−2-20 \le R \le -2−20≤R≤−2,∣n∣≤37336|n| \le 37336∣n∣≤37336.
NOIP2000NOIP2000NOIP2000提高组第一题

补充

测试点说明

30000=1×(−2)16+1×(−2)15+1×(−2)14+1×(−2)13+1×(−2)12+0×(−2)11+1×(−2)10+1×(−2)9+0×(−2)8+0×(−2)7+0×(−2)6+1×(−2)5+0×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+0×(−2)030000=1\times(-2)^{16}+1\times(-2)^{15}+1\times(-2)^{14}+1\times(-2)^{13}+1\times(-2)^{12}+0\times(-2)^{11}+1\times(-2)^10+1\times(-2)^9+0\times(-2)^8+0\times(-2)^7+0\times(-2)^6+1\times(-2)^5+0\times(-2)^4+0\times(-2)^3+0\times(-2)^2+0\times(-2)^1+0\times(-2)^030000=1×(−2)16+1×(−2)15+1×(−2)14+1×(−2)13+1×(−2)12+0×(−2)11+1×(−2)10+1×(−2)9+0×(−2)8+0×(−2)7+0×(−2)6+1×(−2)5+0×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+0×(−2)0

−20000=1×(−2)15+0×(−2)14+1×(−2)13+1×(−2)12+0×(−2)11+1×(−2)10+0×(−2)9+1×(−2)8+0×(−2)7+1×(−2)6+1×(−2)5+0×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+0×(−2)0-20000=1\times(-2)^{15}+0\times(-2)^{14}+1\times(-2)^{13}+1\times(-2)^{12}+0\times(-2)^{11}+1\times(-2)^10+0\times(-2)^9+1\times(-2)^8+0\times(-2)^7+1\times(-2)^6+1\times(-2)^5+0\times(-2)^4+0\times(-2)^3+0\times(-2)^2+0\times(-2)^1+0\times(-2)^0−20000=1×(−2)15+0×(−2)14+1×(−2)13+1×(−2)12+0×(−2)11+1×(−2)10+0×(−2)9+1×(−2)8+0×(−2)7+1×(−2)6+1×(−2)5+0×(−2)4+0×(−2)3+0×(−2)2+0×(−2)1+0×(−2)0

28800=1×(−16)4+9×(−16)3+1×(−16)2+8×(−16)1+0×(−16)028800=1\times(-16)^4+9\times(-16)^3+1\times(-16)^2+8\times(-16)^1+0\times(-16)^028800=1×(−16)4+9×(−16)3+1×(−16)2+8×(−16)1+0×(−16)0

−25000=7×(−16)3+15×(−16)2[F是15]+11×(−16)1[B是11]+8×(−16)0-25000=7\times(-16)^3+15\times(-16)^2[F是15]+11\times(-16)^1[B是11]+8\times(-16)^0−25000=7×(−16)3+15×(−16)2[F是15]+11×(−16)1[B是11]+8×(−16)0

思路

emmmmemmmmemmmm,先举一个例子,比如100010001000在−2-2−2进制下是什么样的
1000/(−2)=−500(ceil)1000/(-2)=-500 (ceil)1000/(−2)=−500(ceil)–>1000−(−500)×(−2)=01000-(-500)\times(-2)=01000−(−500)×(−2)=0—>余0
−500/(−2)=250(ceil)-500/(-2)=250 (ceil)−500/(−2)=250(ceil)–>−500−250×(−2)=0-500-250\times(-2)=0−500−250×(−2)=0—>余0
250/(−2)=−125(ceil)250/(-2)=-125 (ceil)250/(−2)=−125(ceil)–>250−(−125)×(−2)=0250-(-125)\times(-2)=0250−(−125)×(−2)=0—> 余0
−125/(−2)=63(ceil)-125/(-2)=63 (ceil)−125/(−2)=63(ceil)–>−125−63×(−2)=1-125-63\times(-2)=1−125−63×(−2)=1—>余1
63/(−2)=−31(ceil)63/(-2)=-31 (ceil)63/(−2)=−31(ceil)–>63−(−31)×(−2)=163-(-31)\times(-2)=163−(−31)×(−2)=1—>余1
−31/(−2)=16(ceil)-31/(-2)=16 (ceil)−31/(−2)=16(ceil)–>−31−16×(−2)=1-31-16\times(-2)=1−31−16×(−2)=1—>余1
16/(−2)=−8(ceil)16/(-2)=-8 (ceil)16/(−2)=−8(ceil)–>16−(−8)×(−2)=016-(-8)\times(-2)=016−(−8)×(−2)=0—>余0
−8/(−2)=4(ceil)-8/(-2)=4 (ceil)−8/(−2)=4(ceil)–>−8−4×(−2)=0-8-4\times(-2)=0−8−4×(−2)=0—>余0
4/(−2)=−2(ceil)4/(-2)=-2 (ceil)4/(−2)=−2(ceil)–>4−(−2)×(−2)=04-(-2)\times(-2)=04−(−2)×(−2)=0—>余0
−2/(−2)=1(ceil)-2/(-2)=1 (ceil)−2/(−2)=1(ceil)–>−2−1×(−2)=0-2-1\times(-2)=0−2−1×(−2)=0—>余0
1/(−2)=0(ceil)1/(-2)=0 (ceil)1/(−2)=0(ceil)–>1−0×(−2)=11-0\times(-2)=11−0×(−2)=1—>余1
结束!!
最后结果100001110001000011100010000111000,验算一下,发现对了!!!
所以只要每次将商向上取整,就可以做到正确的模拟

上代码!!!

#include <cstdio>//如果比赛要用freopen一定记得cstdio
#include <iostream>//cin,cout
#include <cmath>//ceil
using namespace std;//方便,不用写std::cin,std::cout
int main(){int n,b,j=0,emm,str[100000];//n和b是输入,j是计数变量,emm是临时变量,str是一个很重要的数组cin>>n>>b;//输入emm=n;//赋值给临时变量cout<<n<<"="; //先输出while(emm){//如果emm!=0int tmp=ceil((double)emm/b);//让第十二行不那么长str[j]=(emm-tmp*b);//把每次的结果记录下来,最终反向输出emm=tmp;//把商赋给emmj++;//每次计数变量加加}for(int i=j-1;i>=0;i--){//反向if(str[i]<10)  cout<<str[i];//普通输出else{//如果大于等于10char ch=(str[i]-10)+'A';//定义一个字符,把它设置为输出cout<<ch;//输出某个大写字母}} cout<<"(base"<<b<<")";//最后的一步return 0;
}

谢谢大家的观看,麻烦点个赞吧!

P1017 进制转换 (洛谷)相关推荐

  1. 信息学奥赛一本通 1820:【00NOIP提高组】进制转换 | 洛谷 P1017 [NOIP2000 提高组] 进制转换

    [题目链接] ybt 1820:[00NOIP提高组]进制转换 洛谷 P1017 [NOIP2000 提高组] 进制转换 注意:两OJ上题目内容相同,输入输出要求不同 [题目考点] 1.数制 [解题思 ...

  2. 洛谷——P1017 进制转换

    P1017 进制转换 题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1\times ...

  3. 【进制转换】负进制转换 多进制转换

    1.负进制转换 洛谷P1017 进制转换 负进制的转换和正进制的转换雷同,都是用短除取余法,这里要保证余数都要是正数才行: 要想让本来余数是负数变为正数,其实很好操作,就直接让商+1,余数-(相应的进 ...

  4. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换

    描述 我们都知道Excel的列数是用字母表示的,比如第1列对应A,第27列对应AA. 假设给定一个正整数n,你能给出它所对应的字母表示么? 输入格式 程序需要读入多个测试样例,每个测试样例中: 一个正 ...

  5. 洛谷——P1017 [NOIP2000 提高组] 进制转换(C++)

    洛谷--P1017 [NOIP2000 提高组] 进制转换(C++) 前言 前几天才参加了第十三届蓝桥杯比赛,发现居然有两道于进制相关的题,而且那道编程题--X进制减法,别说做了,题都看不懂,真的是枯 ...

  6. 洛谷P1017题解 [NOIP2000 提高组] 进制转换

    原文地址:https://luvletter.blog.luogu.org/p1017-ti-jie P1017 [NOIP2000 提高组] 进制转换 题目描述 我们可以用这样的方式来表示一个十进制 ...

  7. 进制转换(洛谷-P1017)

    题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减 1 )为指数,以 10 为底数的幂之和的形式.例如: 123 可表示为 1*10^2+2\*10^ ...

  8. 不怂Java进制转换(洛谷P1143题题解,Java语言描述)

    感慨 Java也能这么好使啊,不容易-- --进阶的JFarmer 题目要求 P1143题目链接 分析 进制转换其实也还好,但既然用了Java,那就得扬眉吐气一次,体会体会利用API轻松秒题的感受,机 ...

  9. 洛谷——P2084 进制转换

    P2084 进制转换 题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 124+0*23+122+0*21+1*2^0, 那么请你编程实现,将一 ...

最新文章

  1. mac修改默认python版本_Anaconda/MacOS:更改默认python版本
  2. java使用Calendar类获取常用简单工具类
  3. LeetCode.961-2N数组中N次重复的元素(N-Repeated Element in Size 2N Array)
  4. 单片机模数转换实验c语言程序,单片机实验AD转换实验
  5. html的frame加背景图片,tkinter第二章(添加图片,背景图片)
  6. Java基础:接口多态的综合案例 —— 笔记本电脑
  7. 编译OpenJDK12:valid values for --with-freetype are system and bundled
  8. PHP 多维数组转换一维数组
  9. 连接服务器打印机文件名无效,excel服务器-办公室常识——共享服务器文件报错,共享打印机无法打印的解决办法(解决word、excel不能打印))...
  10. 计算机控制机器人运动的原理,工业机器人控制系统的基本原理
  11. PyQt5-Label背景颜色和文本颜色的设置
  12. 人工智能导论(10)——机器人(Robot)
  13. 基于JAVA优乐帮育儿系统计算机毕业设计源码+系统+数据库+lw文档+部署
  14. AppCan TreeView
  15. linux wep加密方式,iPad wifi 断网问题通过设置加密方式(Mixed WEP)解决
  16. 【PHP学习】Yii2框架Gii模块使用
  17. 自然数 素数 质数_素数列表–最多20,000个素数的图表
  18. SaaS行业持续升温,这里有你想了解的SaaS云服务优势
  19. 安装MongoDB出现的问题
  20. python rgb2gray_Python--图像处理(2)

热门文章

  1. Corral the Cows POJ - 3179(二分+前缀和+离散化)
  2. Android 面试文档分享
  3. Chrome 主页被恶意篡改快速解决
  4. 关于python语言中缩进的说法_以下关于Python语言中“缩进”说法正确的是:
  5. MOVICS系列教程(三) RUN Module
  6. 2021年最受欢迎的10款开源DevOps工具
  7. 计算机视觉 什么是计算机视觉
  8. 【方法篇】基于LC-MS/MS手段分析与MHC结合的肽序列
  9. 邻接矩阵用c语言,邻接矩阵无向图(一)之 C语言详解
  10. 某钢厂脱硫系统智能化超低排放改造设计