비버놀로지

[JUNGOL 정올] 1534 10진수를 2,8,16진수로 (C++) 본문

ALGORITM/C C++

[JUNGOL 정올] 1534 10진수를 2,8,16진수로 (C++)

KUNDUZ 2023. 1. 12. 15:50
728x90

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=806&sca=2040 

 

JUNGOL

 

www.jungol.co.kr

제한시간1000 ms    메모리제한32 MB    해결횟수851 회    시도횟수1695 회   

문제

10진수를 입력 받아서 2, 8, 16진수로 바꾸어 출력하는 프로그램을 작성하시오.

 

입력형식

입력의 첫줄에는 10진수 N(1≤N≤100,000)과 바꿀 진수 B(2, 8, 16)가 공백으로 구분하여 입력된다.

16진수에서 10이상의 수는 순서대로 'A', 'B', 'C', 'D', 'E', 'F'로 나타낸다.

 

출력형식

입력받은 10진수를 B진수로 바꾸어 출력한다.

 

입력 예

27 2

출력 예

11011

 

입력 예

27 16

출력 예

1B

 

입력 예

27 8

출력 예

33

 

출처

jungol
 

JUNGOL

 

www.jungol.co.kr

 

 주어진 숫자를 0이 될때까지 나눠주면서 나오는 나머지 값을 저장하는 방식으로 문제를 해결했다.

 

#include <string>
#include <algorithm>
#include <iostream>

using namespace std;

int main() {
	int N;
	int B;
	string answer = "";
	cin >> N >> B;
    // 나머지를 이용하여 문제를 해결한다.
    // 주어진 값이 0이 될때까지 나오는 나머지는 string에 붙여준다.
	while (N > 0) {
		if (N%B >= 10) {
			answer.append(to_string('A' + N % B - 10));
		}
		else {
			answer.append(to_string(N%B));
		}
		N /= B;
	}
    // 만들어진 결과값을 역순으로 돌려준다.
	reverse(answer.begin(), answer.end());
	cout << answer;
	return 0;
}

 

728x90
Comments