Algorithm

[백준] 알고리즘 2089번 - -2진수 문제

낭강 2020. 12. 21. 22:05

#include <bits/stdc++.h>
using namespace std; 
int main()
{
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int n;
    cin >> n;

    if (n == 0)
    {
        cout << "0\n";
        return 0;
    }

    string result;
    while (n != 0)
    {
        if (n % -2 == 0)
        {
            result += "0";
            n /= -2;
        }
        else
        {
            result += "1";
            n = (n - 1) / -2;
        }
    }
    reverse(result.begin(), result.end());

    cout << result << '\n';

    return 0;
}
 
  • 나머지=0 인경우

n이 음수, 양수 상관없이 나머지가 0이 될때는 0을 그대로 출력해주면 된다.

 

  • 나머지가 0이 아닌경우

이경우는 n이 음수인지 양수인지에 따라 c++인 경우 해석의 차이가 있다고 한다.

그러므로 정확하게 내림연산을 해줘야 정확한 값이 구해진다.