Notice
Recent Posts
Recent Comments
Link
알고리즘 모음(C++)
백준 11005 - 진법 변환 2(C++) 본문
문제 링크입니다. https://www.acmicpc.net/problem/11005
11005번: 진법 변환 2
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net

주어진 10진수를 B진법으로 변환해 출력하는 문제입니다.
예를 들어 50을 2진수로 변환하는 방법은
50 % 2 = 0, 50 / 2 = 25
25 % 2 = 1, 25 / 2 = 12
12 % 2 = 0, 12 / 2 = 6
6 % 2 = 0, 6 / 2 = 3
3 % 2 = 1, 3 / 2 = 1
1 % 2 = 1, 1 / 2 = 0
-> 110010
해당 과정으로 변환이 됩니다.
바꾸길 원하는 B진수를 10진수로 나눈 나머지를 계속 가져온 뒤, B로 나눠주는 과정을 0이 될 때까지 반복하면 됩니다.
만약 나머지가 10이상이 될 경우, 알파벳을 통해 수를 나타내야됩니다.(A->10, Z->35)
‘A’ 값에 배열값 - 10을 더하면 해당 값을 가진 알파벳이 출력됩니다.
자세한 것은 코드를 참고해주세요.
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <vector>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cmath>
#include <cstdio>
#include <string>
#include <deque>
using namespace std;
int N, B, k;
int arr[1001];
int main() {
cin.tie(0);
cout.tie(0);
cin >> N >> B;
while(1){
if(N == 0) break;
arr[k] = N % B;
N /= B;
k++;
}
for(int i = k-1; i >= 0; i--){
if(arr[i] < 10) cout << arr[i];
else cout << (char)('A'+arr[i]-10);
}
return 0;
}

질문 및 조언은 댓글을 남겨주세요.
'백준' 카테고리의 다른 글
백준 2903 - 중앙 이동 알고리즘(C++) (0) | 2023.10.23 |
---|---|
백준 2720 - 세탁소 사장 동혁(C++) (1) | 2023.10.23 |
백준 25305 - 커트라인(C++) (0) | 2023.10.23 |
백준 2566 - 최댓값(C++) (0) | 2023.10.22 |
백준 10811 - 바구니 뒤집기(C++) (0) | 2023.10.14 |