백준 문제풀이/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;
}