프로그래밍/알고리즘

Softeer-연습문제-지도 자동 구축(C++)

Se-chan Oh 2021. 3. 23. 23:52

문제 링크 : 

https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=413

 

문제 개요 : 

N단계에서 점의 개수 구하기

 

#include<iostream>

using namespace std;

int main(int argc, char** argv)
{
        int N; // N단계
        cin >> N;
        printf("%d",((1<<N)+1)*((1<<N)+1)); // 수열a(n)의 일반 식 : (2^n+1)^2

 return 0;
}

 

N단계의 점 개수를 a(n)이라 할 때, a(n) 일반식 구하기

1) N단계의 점의 개수 a(n)의 일반 식을 구해야 한다.

2) 한 변에 놓여진 점의 개수를 b(n)이라 하면, a(n) = b(n)^2이다.

3) b(n) = b(n-1) + 2^(n-1)이고 b(1)=3이므로, b(n) = 2^n+1이다.

4) 2^N을 shiftleft 연산자를 이용하여 (1<<N)로 표현했다.

5) a(n)은 b(n)을 두 번 곱하면 된다.