티스토리 뷰

백준/실버

[백준 1740번] 거듭제곱 (C++)

게임개발기원 2023. 2. 21. 13:48
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main(void) {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    ll N;
    cin >> N;

    queue<int> q;
    while(N)
    {
        q.push(N%2);  //이진수 저장
        N/=2;
    }
    
    ll result = 0; ll multiply = 1;

    while(!q.empty())
    {
        result += q.front() * multiply;
        multiply *= 3; //3진수 만들기
        q.pop();
    }

    cout << result;

    return 0;
}

문제링크 : https://www.acmicpc.net/problem/1740

 

1740번: 거듭제곱

3의 제곱수를 생각하자. 3의 0제곱, 3의 1제곱, 3의 2제곱, ... 은 순서대로 1, 3, 9, 27, ... 이 된다. 이를 바탕으로, 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 수를 생각할 수 있다. 예를

www.acmicpc.net

 

처음 입력받은 값을 이진수로 바꿔주고, 이를 다시 3진수로 바꿔준다.

 

N = 5
2진수 : 1 0 1 -> 2**0 + 2**2
3진수 : 1 0 1 -> 3**0 + 3**2
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함