(백준 1740) 성능(C++)


처음 봤을때는 룰을 찾아볼만 하다고 생각했는데 생각보다 어렵더군요…

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일차…