반응형
출처: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=2375&sca=2040
Approach
11 진법 부터는 0 ~ 9, A ~ Z 까지 대문자를 사용합니다.
(수가 int 범위를 초과할 수 있음에 유의)
▶ A 진법의 수 → 10진법 수 → B진법 수
※ 변환 과정에서 Horner’s method 이용
2진수 1101을 자리수별 가중치를 주어 10진수로 나타내면 아래와 같다.
1101 = 0 * 24 + 1 * 23 + 1 * 22 + 0 * 21 + 1 이므로
= (((0*2 + 1) * 2 + 1) * 2 + 0) * 2 + 1 = 1310
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
typedef long long LL;
int A, B;
char str[70];
char toChar(int r) {
if (r < 10) return r + '0';
return r + 'A' - 10;
}
void convert(LL d) {
if (d < B) {
printf("%c", toChar(d));
return;
}
convert(d / B);
int r = d % B;
printf("%c", toChar(r));
}
int main() {
// freopen("input.txt", "r", stdin);
while (scanf("%d %s %d", &A, str, &B) && A) {
LL d = 0;
// A 진법수 > 10진법수
for (int i = 0; str[i]; ++i) {
/*
if(str[i] < 'A') d = d*A + str[i] - '0';
else d = d*A + str[i] - 'A' + 10;
*/
d = d * A + str[i] - 48 - (str[i] > '9') * 7;
}
// 10진법수 > B진법수
convert(d);
puts("");
}
}
반응형
'PS 문제 풀이 > Jungol' 카테고리의 다른 글
[Jungol] 정올 1328 빌딩 (0) | 2021.03.17 |
---|---|
[Jungol] 정올 3123 키로거(Keylogger) (0) | 2021.03.17 |
[Jungol] 정올 2068 숫자의 종류 (0) | 2021.03.17 |
[Jungol] 정올 2501 모양 정돈 (0) | 2021.03.17 |
[Jungol] 정올 1040 자리올림 횟수 찾기 (0) | 2021.03.17 |
댓글