
#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++인 경우 해석의 차이가 있다고 한다.
그러므로 정확하게 내림연산을 해줘야 정확한 값이 구해진다.
'Algorithm' 카테고리의 다른 글
| [백준] 알고리즘 1929번 - 소수 구하기 문제 (0) | 2020.12.25 |
|---|---|
| [백준] 알고리즘 1978번 - 소수 찾기 (0) | 2020.12.22 |
| [백준] 알고리즘 2745번 - 진법 변환 (0) | 2020.12.15 |
| [백준] 알고리즘 11005번 - 진법 변환 2 문제 (0) | 2020.12.15 |
| [백준] 알고리즘 수학 - 나머지연산, GCD, LCM, 진법변환, 소수 (0) | 2020.12.14 |
