P1017 [NOIP2000 提高组] 进制转换

1|0P1017 [NOIP2000 提高组] 进制转换

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

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

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

比如对于 102 进制的转换。

  • 第一次短除 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; }

__EOF__

本文作者Kdlyh
本文链接https://www.cnblogs.com/kdlyh/p/17871463.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   加固文明幻景  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示