백준/실버
[백준 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