LuoGu P1017 进制转换【对负进制的理解与转换】

题目链接

在这里插入图片描述

思路分析

这题和正的进制转换一样,短除就可以,但是两个负数相%可能会得负数,负数除法可能也和我们要的结果不一样

如:我们想要:-3/-2=2

                -3%-2=1(余数必须为正)

但系统:-3/-2=1

-3%-2=-1(显然系统负数相模可能会得负)

这一题理解很重要 你要知道负进制转换的工作原理才行

负进制和正进制其实没多大差别

只不过可能在某个数位上出现负数

你要做的就是从上一位借1来

没错 就和减法差不多

int n, r;

int main() {
	cin >> n >> r;
	string res; int m = n;
	while (n != 0) {
		int t = n % r; n /= r;
		if (t < 0)n++, t -= r;//向上一位借位,同时将负的模数转化为正
		if (t < 10)res += t + '0';
		else res += t - 10 + 'A';
	}
	reverse(res.begin(), res.end());
	printf("%d=%s(base%d)\n", m, res.c_str(), r);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值