본문 바로가기
Programming/BOJ

[C/C++] 백준 #1740 거듭제곱(수학)

by 작은별하나 2022. 10. 6.

이번문제는 3진수를 생각하면 됩니다.  단지 0과 1로만 이루어진 3진수가 되는 것이죠.

 

예를 들어서 5번째로 작은 거듭제곱수는 5가 이진수로 101이므로

 

101(3)=32+30=10

 

이 됩니다.

 

2's power number

 

마찬가지로 10은 1010(2) 이므로

1010(3)=33+31=30

이 됩니다.

 

제가 작성한 소스입니다.  소스는 참고용으로 봐주세요.

//------------------------------------------------
//  baekjoon #1740
//      - by Edan
//      - created at 2019-07-02
//------------------------------------------------
#include <stdio.h>

//  500,000,000,000 < 2^39
//  3^39 < 2^62
int main()
{
    long long n, sum = 0, s = 1;
    scanf("%lld", &n);
    while(n)
    {
        if(n & 1)
        {
            sum += s;
        }
        s *= 3;
        n >>= 1;
    }
    printf("%lld\n", sum);
    return 0;
}
반응형

댓글