문제 링크 :
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)을 두 번 곱하면 된다.
'프로그래밍 > 알고리즘' 카테고리의 다른 글
Softeer-연습문제-8단 변속기(C++) (0) | 2021.03.26 |
---|---|
Softeer-연습문제-장애물 인식 프로그램(C++) (0) | 2021.03.26 |
Softeer-연습문제-HMG는 왜 HMG일까?(C++) (0) | 2021.03.24 |
Softeer-연습문제-동계 테스트 시점 예측(C++) (0) | 2021.03.24 |
Softeer-연습문제-성적평균(C++) (0) | 2021.03.23 |