https://www.acmicpc.net/problem/11576
11576번: Base Conversion
타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의
www.acmicpc.net
문제 조건에서 A진법으로 나타낸 수를 10진법으로 변환하였을 때의 값은 양의 정수이며 220보다 작다. 라고 했으므로 A진수 -> 10진수 -> B진수로 변환하는 방법을 사용했다.
각 자리수를 decimal += pow(A,i)*num[m-i-1];로 10진수로 변환 후,
나머지를 mod배열에 저장 하고, 마지막 남은 decimal 값(몫)먼저 출력 후 mod를 거꾸로 출력하여 B진수로 변환했다.
코드
//11576
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
#define SIZE 1000001
int main(int argc, const char * argv[]) {
int A,B,m;
int num[SIZE];
int mod[SIZE];
int decimal = 0;
cin>> A >> B;
cin >> m;
for(int i=0;i<m;i++)cin>>num[i];
for(int i=0;i<m;i++){
decimal += pow(A,i)*num[m-i-1];
}
int j=0;
while(decimal >= B){
mod[j] = decimal%B;
decimal = decimal/B;
j++;
}
cout << decimal << " ";
for(int i=j-1;i>=0;i--) cout << mod[i] << " ";
return 0;
}
'코딩테스트 연습 > Baekjoon' 카테고리의 다른 글
[Baekjoon] 11653번 : 소인수 분해 (c++) (0) | 2022.03.31 |
---|---|
[Baekjoon] 1158번 : 요세푸스 문제 (c++) (0) | 2022.03.31 |
[Baekjoon] 11005번 : 진법 변환 2 (c++) (0) | 2022.03.31 |
[Baekjoon] 10872번 : 팩토리얼 (c++) (0) | 2022.03.31 |
[Baekjoon] 10845번 : 큐 (0) | 2022.03.31 |