[백준] Baekjoon Online Judge
문제
2015, 2016, 2017년에 이어 올해도 연세대학교 컴퓨터과학과 프로그래밍 경진대회가 열린다.
도현이는 4년 연속 교내대회가 개최된다는 것에 감격하여, 사비를 털 각오로 화려한 개막식을 준비했다.
도현이가 원하는 것은 폭죽으로, 강의실 A528에서 천장을 다 뚫어버리며 터지는 화려한 폭죽을 모두가 좋아할 것이라 생각했다. 도현이는 아래와 같이 터지는 폭죽을 주문하려 한다.
- 처음 발사된 폭죽이 만든 하나의 대형 불꽃은 적당한 높이에 도달하면 화려한 폭발과 함께 K개의 중형 불꽃으로 갈라진다.
- 각 K개의 중형 불꽃은 다시 각각 K개의 소형 불꽃으로 갈라지며 터진다.
- 그 이후 모든 불꽃은 소멸한다.
도현이는 적당한 폭죽을 찾아보려 했지만, 폭죽 판매처에서는 K의 값을 알려주지 않았고,
대신 폭죽 하나당 만들어지는 총 불꽃의 수(처음 터진 대형 불꽃을 포함해, 중형 불꽃과 소형 불꽃을 모두 포함한 수)만을 알려줬다. 결국 도현이는 어떤 폭죽이 적당할지 알아내지 못해 폭죽을 구매하지 못했다.
이에 도현이는 이 난제를 해결해주는 학생에게 이번 대회에서 맞은 문제 수를 하나 늘려주기로 하였다. 여러분은 대회에서 우승하기 위해, 폭죽이 만들 모든 불꽃의 개수가 주어지면 K의 값을 찾아보도록 하자.
입력
총 불꽃의 수 N이 주어진다. (3 ≤ N ≤ 10101)
출력
K의 값을 출력한다. 이 값은 정수임이 보장되며, 불가능한 경우는 입력으로 주어지지 않는다.
풀이
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int N;
cin >> N;
for (int i = 1; ; i++) {
if (i + i * i + 1 == N) {
cout << i << '\n';
break;
}
}
return 0;
}
총 불꽃의 수는 (최초의 불꽃 1개 + K개의 중형 불꽃 + K * K개의 소형 불꽃)개이다.
'백준 > C++' 카테고리의 다른 글
[Baekjoon/C++] 3566번 - 대형 스크린 (0) | 2025.05.09 |
---|---|
[Baekjoon/C++] 24937번 - SciComLove (2022) (0) | 2025.05.08 |
[Baekjoon/C++] 5618번 - 공약수 (0) | 2025.05.06 |
[Baekjoon/C++] 33810번 - SciComLove (2025) (0) | 2025.05.05 |
[Baekjoon/C++] 4335번 - 숫자 맞추기 (0) | 2025.05.01 |