이번 문제는 실제 사용할 일은 거의 없는 -2 진법 이야기입니다. 간혹 수학에서는 마이너스 진법이나 복소수 진법과 관련되어 이야기 되기는 합니다. 대표적으로 \(1+i\)진법 같은 경우가 있습니다.
https://www.acmicpc.net/problem/2089
문제 자체는 오답을 낼 가능성이 있는 것을 제외하고는 크게 어렵지는 않습니다.
일반적으로 양수 진법이라면, 큰 문제가 없지만, 음수 진법의 경우에는 나머지 연산에 주의해야 합니다. 나머지 연산은 사용하는 언어에 따라서 다릅니다. 양수 나머지는 C, Java, C#, Python 등 어떤 프로그래밍 언어를 쓰든 동일하지만, 음수 나머지는 다릅니다. 그래서 동일한 방법으로 프로그램을 바꿀 수는 없습니다. 저는 그런 부분에 대한 추가 처리를 하고, 기본은 일반적인 진법 연산을 따랐습니다.
제가 작성한 소스입니다.
//------------------------------------------------
// baekjoon #2089
// - by Aubrey Choi
// - created at 2019-08-03
//------------------------------------------------
#include <stdio.h>
int main()
{
int n, r, cp=99;
char s[100];
scanf("%d", &n);
s[99]=0;
while(n >= 2 || n < 0)
{
r = n%(-2);
n = n/(-2);
if(r < 0) { n++; r=1; }
s[--cp]=r+'0';
}
s[--cp]=n+'0';
puts(s+cp);
return 0;
}
반응형
'Programming > BOJ' 카테고리의 다른 글
[C/C++] 백준 #2108 통계학(수학) (0) | 2023.03.31 |
---|---|
[C/C++] 백준 #2096 내려가기(동적 계획법) (0) | 2023.03.30 |
[C/C++] 백준 #2086 피보나치 수의 합(분할정복) (0) | 2023.03.28 |
[C/C++] 백준 #2075 N번째 큰 수(n'th element) (0) | 2023.03.25 |
[C/C++] 백준 #2056 작업(위상정렬) (0) | 2023.03.23 |
댓글