양수 N이 주어집니다. 목표는 숫자 N을 3부분으로 나눌 수 있는 방법의 수를 세는 것입니다. 부품은 같을 수도 있고 같지 않을 수도 있습니다. N은 [1,5000] 범위에 있습니다.
숫자의 3개 부분에 대해 3개의 for 루프를 사용하여 이를 수행합니다. 가장 안쪽 루프에서 세 개의 합이 N인지 확인합니다. 참이면 방법의 개수를 늘립니다.
예를 들어 이해합시다.
입력 - N=5
출력 − N을 세 부분으로 나누는 방법의 수:2
설명 − 5는 (1,1,3)과 (1,2,2)의 합으로 표시될 수 있습니다.
입력 - N=9
출력 − N을 세 부분으로 나누는 방법의 수:7
설명 - 9는 (1, 1, 7), (1, 2, 6), (1, 3, 5), (1, 4, 4), (2, 2, 5), ( 2, 3,4) 및 (3, 3, 3).
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
1에서 5000 사이의 값으로 초기화된 정수 N을 사용합니다.
-
DivideN(int n) 함수는 n을 취하여 n을 3부분으로 나눌 수 있는 방법의 수를 반환합니다.
-
방법의 수에 대해 초기 변수 개수를 0으로 간주합니다.
-
숫자의 각 부분에 대해 세 개의 for 루프를 사용하여 순회합니다.
-
1<=i
에서 가장 바깥쪽 루프 -
i, j, k의 합이 n인지 확인하십시오. true이면 카운트를 증가시킵니다.
-
모든 루프의 끝에서 count는 n을 세 부분으로 나누는 방법의 총계를 갖게 됩니다.
-
카운트를 결과로 반환합니다.
예시
#include <bits/stdc++.h> using namespace std; int divideN(int n){ int count = 0; for (int i = 1; i < n; i++){ for (int j = i ; j < n; j++){ for (int k = j; k < n; k++){ int sum=i+j+k; if(sum==n) { count++; } } } } return count; } int main(){ int N=500; cout <<endl<< "Number of ways to divide N in 3 parts : "<<divideN(N); return 0; }
출력
위의 코드를 실행하면 다음 출력이 생성됩니다 -
Number of ways to divide N in 3 parts: 20833