티스토리 뷰
#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
'백준 > 실버' 카테고리의 다른 글
[백준 9324번] 진짜 메시지 (C++) (0) | 2023.02.23 |
---|---|
[백준 14731번] 謎紛芥索紀 (Large) (C++) (0) | 2023.02.22 |
[백준 11123번] 양 한마리... 양 두마리... (C++) (0) | 2023.02.20 |
[백준 3273번] 두 수의 합 (0) | 2023.02.19 |
[백준 11332번] 시간초과 (C++) (0) | 2023.02.14 |