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 <iostream>
#include <stack>
using namespace std;
int main()
{
long long int N;
cin >> N;//10진수를 입력받는다
stack<int> result;//2진수 결과를 담을 stack
while (1)
{
if (N == 1)//나누기를 계속했을 때 몫이 1이면 마무리
{
result.push(1);
break;
}
if (N == 0)//나누기를 계속했을 때 몫이 0이면 마무리
{
result.push(0);
break;
}
if (N % -2 == 0)//-2로 나누었을때 나누어 떨어지면
{
result.push(0);//결과에 0넣고 -2로 나누기
N = N / -2;
}
else//-2로 안 나누어 떨어질 경우
{
result.push(1);//결과값에 1을 넣고
N = N - 1;//몫은 -1 해준뒤
N = N / -2;//-2로 나눈다
}
}
while (!result.empty())//stack에 담아돈 결과값 출력
{
cout << result.top();
result.pop();
}
}
'백준 c++ > (1-1)백준 c++ 알고리즘 기초' 카테고리의 다른 글
백준 11005 c++ 진법 변환 2 (0) | 2022.07.14 |
---|---|
백준 17103 c++ 골드바흐 파티션 (0) | 2022.07.13 |
백준 1212 c++ 8진수 2진수 (0) | 2022.07.12 |
백준 1373 c++ 2진수 8진수 (0) | 2022.07.11 |
백준 17087 c++ 숨바꼭질 6 (0) | 2022.07.07 |