zz12345의 코딩 공부

https://www.acmicpc.net/problem/6679

 

6679번: 싱기한 네자리 숫자

싱기한 네자리 숫자란, [1000,9999]인 10진수 숫자중에서,  다음의 조건을 만족하는 숫자를 말한다. 숫자를 10진수, 12진수, 16진수로 나타낸 다음, 각각의 숫자에 대해, 각 숫자의 자리수를 더했을

www.acmicpc.net

 

코드

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
#include <iostream>
using namespace std;
 
int main() {
    int ten,two,six,n;
    for(int i=1000;i<=9999;i++)
    {
        n=i;
        ten=two=six=0;
        while(n!=0)
        {
            two+=n%12;
            n/=12;
        }
        n=i;
        while(n!=0)
        {
            six+=n%16;
            n/=16;
        }
        n=i;
        while(n!=0)
        {
            ten+=n%10;
            n/=10;
        }
        if(ten==six && six==two)
        {
            cout<<i<<"\n";
        }
    }
    return 0;
}
cs

 

풀이

 10진수 n을 x 진수로 표현하는 방법은 n을 x로 나눈 나머지를 구해주면서 n의 값을 n을 x로 나눈 몫으로 바꿔주는 연산을 n이 0이 될 때까지 수행하고 나온 나머지를 나온 순서로 일의 자리부터 써주면 된다.

10진수 105를 7진수로 변환하기

 x 진수로 변환한 수의 각 자리수를 더 한 값을 쉽게 구하기 위해 12, 18행의 코드를 사용했다. 27행의 if 문으로 각 진수로 표현한 수들의 자리수의 합이 같다면 10진법으로 표현된 그 수를 출력해준다.

공유하기

facebook twitter kakaoTalk kakaostory naver band