IT 프로그래밍/C++
[c++] 2903번 중앙 이동 알고리즘
기술1
2024. 5. 25. 16:00
문제
https://www.acmicpc.net/problem/2903
코드
#include <iostream>
#include <cmath>
using namespace std;
int n;
int main()
{
cin >> n;
int dot = 2;
while (n--)
{
dot = dot * 2 - 1;
}
cout << static_cast<long long>(pow(dot, 2)) << endl;
return 0;
}
설명
주어진 도형을 잘 보면 2 * 점의 개수 -1 순으로 증가를 하는 것을 볼 수 있습니다.
이것을 바탕으로 while문을 걸어준 다음 pow(dot, 2)) 혹은 dot * dot를 출력해주시면 답은 나옵니다. 간단한 문제라 점의 개수가 어떻게 증가하는지 여부만 파악한다면 쉽게 풀 수 있는 문제였습니다.
예제 실행 흐름
만약 n = 3을 입력받으면:
1. 초기 dot = 2.
2. 첫 번째 반복 (n = 2): dot = 2 * 2 - 1 = 3.
3. 두 번째 반복 (n = 1): dot = 3 * 2 - 1 = 5.
4. 세 번째 반복 (n = 0): dot = 5 * 2 - 1 = 9.
5. 최종적으로 dot = 9.
6. pow(dot, 2) = pow(9, 2) = 81.
7. 출력: 81.