Programming/백준
[BOJ] 2018 연세대학교 컴퓨터과학과 프로그래밍 경진대회 Open Contest A번
M0ca
2018. 4. 29. 01:42
반응형
지금 문제 열람이 안되는데
문제는 하나의 큰 폭죽이 k개의 중간 폭죽으로 나눠지고, 나눠진 중간폭죽은 폭죽마다 k개의 작은 폭죽으로 또 나눠져 한줌의 재가 된다는 내용이다.
이때 전체 폭죽 대,중,소의 개수를 주어지고 k를 구하는 문제였다.
입력으로 21이 주어지면
21 = 대+중+소 이다.
여기서 대는 항상 1이다.
20 = 중+소
소는 중의 제곱이다. 편의상 둘다 k라 두자.
20 = k + k^2
k로 묶으면
20 = k(1+k)다.
이것을 코드로 구현하면 되는 단순한 문제다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <iostream> using namespace std; int main() { cin.tie(NULL); cin.sync_with_stdio(false); int n; cin >> n; // result = x*(x+1)+1; for(int i=1;i<101;i++) { if(i*(i+1)+1 == n) { cout << i; break; } } return 0; } | cs |
등비수열의 합으로 푸는 방법도 있더라.
반응형