백준/코테문제집
[백준] C++ 수들의 합5(2018)
2zreal
2025. 1. 21. 19:57
숫자 N을 연속된 자연수의 합으로 나타낼 수 있는 가지수를 출력하는 문제이다.
예를 들어 숫자 5는 2+3, 5로 나타낼 수 있고 숫자 7은 3+4, 7로 나타낼 수 있다.
문제해결방법
1.start와 end를 시작점에 위치시킨다.
2.만약 구간의 합이 N보다 작다면 end를 ++하고 N보다 크다면 start를 ++한다.
3.start가 end보다 커지면 종료한다.
sum==N과 같아졌을 때 end를 움직여도 되고 start를 움직여도 된다. 각각 알맞게 코드만 작성해주면 된다.
#include <iostream>
using namespace std;
int main(void)
{
int N = 0;
cin >> N;
int start = 1;
int end = 1;
int count = 0;
int sum = 1;
while (start<=end)
{
if (sum < N)
{
end++;
sum += end;
}
else if (sum > N)
{
sum -= start;
start++;
}
else if (sum == N)
{
count++;
sum -= start;
start++;
}
}
cout << count;
return 0;
}