11576번 - Base Conversion
진법 변환문제.
A진법을 B진법으로 바꾸기 위해서 A진법을 10진법으로 바꾼 후, 10진법을 B진법으로 바꿨다.
그동안 진법을 좀 풀어봐서 이제 감이 잡혔다.
이번 코드에서는 while 문이 아닌 재귀를 쓰면서 호출이 종료되기 직전에 결과를 출력해서
stack 이나 vector 를 reverse 하지 않고 역순으로 출력이 되도록 하였다.
( 이게 위상정렬인가?? 에서 배웠던것 같은데.. 복습이 필요하겠군)
<정답 코드>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include<iostream> #include<math.h> using namespace std; void trans(int x, int b) { if (x == 0) { return; } trans(x / b, b); cout << x%b << " "; return; } int main() { int A, B, M; int X = 0; cin >> A >> B >> M; for (int i = M-1; i >=0; i--) { int tmp; cin >> tmp; X += tmp*(pow(A, i)); } trans(X, B); cout << endl; return 0; } | cs |
반응형