728x90
https://www.acmicpc.net/problem/2018
#include <iostream>
using namespace std;
int main()
{
int N;
cin >> N;
int sum = 1 ;
int count = 1;
int startIndex = 1;
int endIndex = 1;
while (endIndex != N)
{
if (sum > N)
{
sum = sum - startIndex;
startIndex++;
}
else if (sum < N)
{
endIndex++;
sum = sum + endIndex;
}
else if (sum == N)
{
count++;
endIndex++;
sum = sum + endIndex;
}
}
cout << count;
}
문제
어떠한 자연수 N은, 몇 개의 연속된 자연수의 합으로 나타낼 수 있다. 당신은 어떤 자연수 N(1 ≤ N ≤ 10,000,000)에 대해서, 이 N을 몇 개의 연속된 자연수의 합으로 나타내는 가지수를 알고 싶어한다. 이때, 사용하는 자연수는 N이하여야 한다.
예를 들어, 15를 나타내는 방법은 15, 7+8, 4+5+6, 1+2+3+4+5의 4가지가 있다. 반면에 10을 나타내는 방법은 10, 1+2+3+4의 2가지가 있다.
N을 입력받아 가지수를 출력하는 프로그램을 작성하시오.
입력
첫 줄에 정수 N이 주어진다.
728x90
'Coding Test > 백준' 카테고리의 다른 글
[ 백준 ] 11720번 숫자의 합 구하기 (1) | 2024.01.30 |
---|---|
[ 백준 ] 1874번 스택 수열 (0) | 2024.01.26 |
[ 백준 ] 1546번 자료구조 - 평균 구하기 (0) | 2023.09.06 |
[ 백준 ] 2720번 일반 수학1 - 세탁소 사장 동혁 (0) | 2023.06.26 |
[ 백준 ] 13305번 그리디 - 주유소 (0) | 2023.06.23 |