-
연속된 자연수의 합
입력으로 양의 정수 N이 입력되면 2개 이상의 연속된 자연수의 합으로 정수 N을 표현하는 방 법의 가짓수를 출력하는 프로그램을 작성하세요. 만약 N=15이면 7+8=15 4+5+6=15 1+2+3+4+5=15 와 같이 총 3가지의 경우가 존재한다.
입력설명 첫 번째 줄에 양의 정수 N(7<=N<1000)이 주어진다.
출력설명 첫줄부터 각각의 경우의 수를 출력한다. 맨 마지막 줄에 총 개수를 출력한다.
입력예제 1
15
출력예제 1
7 + 8 = 154 + 5 + 6 = 15
1 + 2 + 3 + 4 + 5 = 15
3
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int i = 0; int N; int count = 0; int result = 0; int allcount = 0; cin >> N; for (i = N-1; i >= 1; i--)//높은 숫자부터 정렬이 되기떄문에 14부터 내림차순으로 반복 { count = 0; result = 0; int arr[16] = {0}; for (int j = i; j >=1 ; j--) { arr[count] = j; count++; result = result + j; if (result == 15) { sort(arr, arr + count);//sort로 배열 오름차순으로 정렬 for (int k = 0; k < count; k++) { if (k == count - 1) { cout << arr[k] << "=" << "15"; } else cout << arr[k] << "+"; } cout << endl; allcount++; break; } } } cout << allcount; }