首页 > 其他分享 >P1017 [NOIP2000 提高组] 进制转换

P1017 [NOIP2000 提高组] 进制转换

时间:2023-12-02 12:56:24浏览次数:49  
标签:短除 NOIP2000 进制 temp P1017 模数

P1017 [NOIP2000 提高组] 进制转换

负进制也一样用短除法转换,但是余数得保证是正数,不然没法用这个方法。

在求余的过程中加入处理:

  • 如果负数,余数减去一个模数,上一次的商先加上一个模数再去除模数得到本次商。

比如对于 \(10\) 到 \(-2\) 进制的转换。

  • 第一次短除 \(-2\),余 \(0\),商 \(-5\)。
  • 第二次短除 \(-2\),余 \(-1\)。
    • 进行操作,余 \(-1-(-2)=1\),商 $ (-5 + (-2))/(-2) = 3$
  • 第三次短除 \(-2\),余 \(-1\)。
    • 进行操作,余 \(-1-(-2)=1\),商 $ (-3 + (-2)) /(-2) = 1$
  • 第三次短除 \(-2\),余 \(1\),商 \(0\)。
  • 得出结果 \(11110\)
while(n)
{
	int temp = n % m;
	if (temp < 0) temp -= m, n += m;
	ans[cnt++] = int_to_char(temp);
	n /= m;
} 

标签:短除,NOIP2000,进制,temp,P1017,模数
From: https://www.cnblogs.com/kdlyh/p/17871463.html

相关文章

  • 进制转换与位运算
    进制12个物品被称为1打,12打被称为1罗,12罗被称为1格。请问:15个是几打几个?6775个是几格几罗几打?2打3个是多少个?1格9罗8打10个是多少个?以上的“几”均是不小于0且小于12的整数分析根据15÷12=1···3,15个除以每打是几个,就是几打,剩下的就是几......
  • 【js】二进制转换-toString
    题目描述将给定数字转换成二进制字符串。如果字符串长度不足8位,则在前面补0到满8位。示例1输入65输出010000011.最简单的方式,toString+slicefunctionconvertToBinary(num){return('00000000'+num.toString(2)).slice(-8);}2.先转换,再补0functionconvertToBinary(num......
  • 进制转换
    进制转换例题(P1143进制转换)思路:由\(n\)进制转为\(10\)进制,再转为\(m\)进制。#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;LLn,m;strings;LLcnt;LLo=0;stringc[20]={"0","1","2","3","4&......
  • 【Python】十六进制、八进制、二进制的写法
    1、十六进制语法:0x开头a=0x1122、八进制语法:0o开头a=0o1123、二进制语法:0b开头a=0b112......
  • Windows下读文件二进制模式和文本模式的区别
    前段时间,碰到了一个奇怪的事情,我实现了一个读某文件的类,原本这个文件是以二进制写的,读的时候没太在意,将模式少写了一个“b”,变成了文本模式_tfopen_s(&pFile,m_file,_T("r"))测试了好些文件都没有问题,直到有一天,一同事反应读取函数有问题,数据被截断了。我看了半天,百思不得其......
  • ubuntu server 22 LTS 安装MySQL8(二进制源码方式)
    原作来源:https://github.com/aminglinux/daily_shell/blob/main/29.sh根据我自己情况稍作修改mysql下载地址:https://downloads.mysql.com/archives/community/ 按照顺序执行逐行执行注意执行过程的提示,报错需处理:tar-xvfmysql-8.0.34-linux-glibc2.17-x86_64.tarsudo......
  • Java基础——进制,浮点数
    进制二进制:用0,1表示,满2进1。、以0b或者0B开头。八进制用0到7表示,满8进1。以数字0开头。十进制用0到9表示,满10进1十六进制用0到9及A到F表示,此处的A到F不区分大小写,满16进1。以0X或者0x开头。例子如下:inti1=0B10;//二进制0Binti2=010;//八进制0inti3......
  • NOIP2000提高组真题解析
    NOIP2000提高组真题解析第一题进制转换题目链接解析首先,我们知道对于10进制数x转2进制数,使用的算法是:求出x%2令x=x/2不断执行1,2,直至x为0,然后倒序输出步骤1的结果。一般可以用数组存步骤1的结果倒序输出或者使用dfs回溯回来再输出。对于负数的情况,比如\(-7=1*(-2)^3......
  • 使用axios获取接口返回二进制流进行文件下载
    1、当接口返回值类型是'application/json'时,处理报错信息1if(response.data.type&&response.data.type=='application/json'){2letreader=newFileReader();3//处理load事件。该事件在读取操作完成时触发4reader.onload=e=>......
  • C++ 十进制与十六进制转换
    文章作者:里海十进制与十六进制转换#include<iostream>#include<string>usingnamespacestd;//十进制整数转十六进制字符串stringDecimalToHex(longlongdecimal){stringhex="";while(decimal>0){intremainder=decimal%16;......