문제링크
https://www.acmicpc.net/problem/11005
문제분석
- 10진법 수 N을 B진법 수로 변환
- 10진법을 넘어가는 진법은 숫자로 표시할 수 없다 => 알파벳 대문자 사용
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
- N과 B가 주어진다
- N : 10억 이하의 자연수
- B : 2<=B<=36
출력
풀이
- 아래와 같이 진법 변환 공식을 사용한다

- 계산된 숫자들을 따로 배열에 담는다.
while(n>=b){
answer[index++] = n%b;
n = n/b;
}
answer[index] = n;
- 출력 시 10이 넘어가면 대문자 알파벳으로 출력한다.
for(int i=index; i>=0; i--){
if(answer[i]<10) cout<<answer[i];
else cout<<(char)('A'+answer[i]-10);
}
전체 코드
#include <iostream>
using namespace std;
int main(void){
int answer[50]={0};
int n=0, b=0, index=0;
cin>>n>>b;
while(n>=b){
answer[index++] = n%b;
n = n/b;
}
answer[index] = n;
for(int i=index; i>=0; i--){
if(answer[i]<10) cout<<answer[i];
else cout<<(char)('A'+answer[i]-10);
}
}