처음 봤을때는 룰을 찾아볼만 하다고 생각했는데 생각보다 어렵더군요…
3의 다른 거듭제곱의 합 <-이 문제 해결의 열쇠였습니다.
지수는 이진수로 표현하여 배열에 저장하고 배열에 3의 거듭제곱을 곱하여 결과를 얻었다.
5000억은 3의 39제곱보다 작기 때문에 배열 크기는 40으로 설정했습니다.
#include <iostream>
using namespace std;
int main(void)
{
long long N;
cin >> N;
int i = 0, arr(40);
while (N > 1)
{
arr(i) = N % 2;
N /= 2;
i++;
}
arr(i) = 1;
long long res = 0, tmp;
for (int j = 0; j <= i; j++)
{
tmp = 1;
for (int k = 0; k < j; k++)
tmp *= 3;
res += tmp * arr(j);
}
cout << res;
return 0;
}
실버 챌린지 1일차…