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

 

 

 

 

문제

 

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

10진법의 수를 입력 받아서 -2진수를 출력하는 프로그램을 작성하시오.

 

 

 

입력

 

첫 줄에 10진법으로 표현된 수 N(-2,000,000,000≤N≤2,000,000,000)이 주어진다.

 

 

 

출력

 

-2진법 수를 출력한다.

 

 

 

코드

 

#include <iostream>
#include <vector>
using namespace std;


int main(){
	int dec; // 10진수
	cin>>dec;

	vector<char> bin;
	
	if(dec == 0)
		cout<<'0';
	else {
		while(dec != 0) {
			if(dec % -2 == 0) {
				bin.push_back('0');
				dec = dec / -2;
			}
			else {
				bin.push_back('1');
				dec = (dec - 1) / -2;
			}
		}

		for(int i = bin.size() - 1; i >= 0; i--)
			cout<<bin[i];
	}
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 1978번: 소수 찾기  (0) 2020.05.18
백준 11576번: Base Conversion  (0) 2020.05.18
백준 1212번: 8진수 2진수  (0) 2020.05.18
백준 1373번: 2진수 8진수  (0) 2020.05.18
백준 2734번: 진법 변환  (0) 2020.05.18