文章

105

粉丝

69

获赞

117

访问

54.2k

头像
负二进制 题解:
P1097
发布于2024年6月1日 20:37
阅读数 484

负数取余的规则:
|小| % |大| = |小| 符号同前
|大| % |小| = |余| 符号同前
举例:
3%4 = 3 ; -3%4 = -3 ; -3%-4 = -3 ; 3%-4 = 3;
5%3 = 2 ; 5%-3 = 2 ;-5%-3 = -2 ; -5%3 = -2;

#include<bits/stdc++.h>
using namespace std;

int n;

int main()
{
	while(cin >> n)
	{
		string res = "0";
		if(!n) 
		{
			cout << res << endl;
			continue; 
		}
		res.pop_back();
		
		while(n)
		{
			int t = abs(n) % (-2);
			res += (abs(t) + '0');
            n = ceil(n / (-2.0));
			//n = (n - t) / (-2);
		}
		
		reverse(res.begin(), res.end());
		
		cout << res << endl;
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

2 条评论
nn1003
2024年6月2日 15:57

求问while里面的n-t什么意思

赞(0)

我与代码的故事 : 回复 nn1003: 保证被除数向上取整,也可以写成这样n = ceil(n / (-2.0));

2024年6月2日 20:06