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];
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 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 |