DY N DY

실력키우기 10진수를 2 8 16진수로(C++) 본문

PARK/ALGORITHM

실력키우기 10진수를 2 8 16진수로(C++)

손세지 2016. 5. 8. 01:23

1534 : 10진수를 2 8 16진수로

제한시간: 1Sec    메모리제한: 32mb
해결횟수: 703회    시도횟수: 1387회   



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

 

입력의 첫줄에는 10진수 N(1≤N≤100,000)과 바꿀 진수 B(2, 8, 16)가 공백으로 구분하여 입력된다.
16진수에서 10이상의 수는 순서대로 'A', 'B', 'C', 'D', 'E', 'F'로 나타낸다.



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


 [Copy]
27 2
 [Copy]
11011


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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**************************************************************
    Problem: 1534
    User: a132034
    Language: C++
    Result: Success
    Time:0 ms
    Memory:1740 kb
****************************************************************/
 
 
#include    <iostream>
using namespace std;
 
int main()
{
    int n;
    int d;
    int i = 0;
    int arr[32] = { 0 };
    cin >> n >> d;
 
    if (d == 2)
    {
        while (n != 1)
        {
            arr[i++] = n % 2;
            n /= 2;
        }
        arr[i] = n;
 
        for (int j = i; j >= 0; --j)
            cout << arr[j];
 
    }
    else if (d == 8)
    {
        while (n > 7)
        {
            arr[i++] = n % 8;
            n /= 8;
        }
        arr[i] = n;
        for (int j = i; j >= 0; --j)
            cout << arr[j];
    }
    else if (d == 16)
    {
        while (n > 15)
        {
            arr[i++] = n % 16;
            n /= 16;
        }
        arr[i] = n;
        for (int j = i; j >= 0; --j)
            arr[j] < 10 ? cout << arr[j] : cout << (char)(arr[j] + 55);
    }
 
 
 
    return 0;
}



10진수에서 2,8,16진수로 바꾸는 모두 동일하다. 

각 진수로 더이상 나눈 몫이 0일 때 까지 나누어주며 나머지를 저장한 후, 반대로 출력해주면 된다. 

(ex - 2진수의 경우 2보다 작은 값, 8진수의 경우 8보다 작은 값, 16진수의 경우 16보다 작은 값이 나올 때 까지 나누어 주면 된다.)

출력의 경우 16진수는 int로 표현할 수 없는 알파벳이 있기 때문에 10보다 큰 수의 경우 출력을 char형으로 해준다. 

삼항연산자를 사용하여 1줄로 표현하였다. 

삼항연산자 : 조건식 ? 참일때 실행할 구문 : 거짓일 때 실행할 구문




'PARK > ALGORITHM' 카테고리의 다른 글

실력키우기 약수와배수(C++)  (0) 2016.05.08
알고리즘 내리막길(JAVA)  (0) 2016.05.08
실력키우기 약수구하기(C++)  (0) 2016.05.03
실력키우기 선택정렬(C++)  (0) 2016.05.03
실력키우기 후위표기법(JAVA)  (0) 2016.05.02