백준 문제풀이/Number Theory

[C++] 백준 문제풀이 (Number Theory) 2089번 -2진수

코딩준우 2023. 7. 6. 16:57

 

 

https://www.acmicpc.net/problem/2089

 

2089번: -2진수

-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110

www.acmicpc.net

 

 

#include <bits/stdc++.h>
// [C++] 백준 문제풀이 (Number Theory)


long long n;
std::string ret;

int main(int argc, char *argv[])
{
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(nullptr);

	
	std::cin >> n;

	if(n == 0) ret = "0";
	else {
		while(n != 0) {
			if((n % -2) == 0) {
				ret += '0';
				n /= -2;
			}
			else {
				ret += '1';
				n = (n - 1) / -2;
			}
		}
	}
	
	std::reverse(ret.begin(), ret.end());
	std::cout << ret << '\n';

	return 0;
}