41. 연속된 자연수의 합

zzzzwso·2023년 9월 17일
0

문제설명

입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방법의 가짓수를 출력하는 프로그램을 작성하세요.
만약 N=15이면
7+8=15
4+5+6=15
1+2+3+4+5=15
와 같이 총 3가지의 경우가 존재한다.

입력설명

첫 번째 줄에 양의 정수 N(7<=N<1000)이 주어진다.

출력설명

첫줄부터 각각의 경우의 수를 출력한다.
맨 마지막 줄에 총 개수를 출력한다

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
	int n, tmp, b = 1, cnt = 0;
	cin >> n;
	tmp = n;
	n--;
	while (n > 0)
	{
		b++;
		n = n - b;
		if (n % b == 0)
		{
			for (int i = 1; i < b; i++)
				cout << (n / b) + i << " + ";
			cout << (n / b) + b << " = " << tmp << "\n";
			cnt++;
		}
		
	}
	cout << cnt;
}
profile
HI there

0개의 댓글