Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

nPr(순열) 값을 계산하는 C 프로그램 작성법

순열(Permutation)인 nPr는 P(n, r)로도 표기하며, 주어진 원소들을 순서를 고려해 나열하는 경우의 수를 구하는 수학 공식입니다. P(n, r)의 공식은 다음과 같습니다.

P(n, r) = n! / (n − r)!

n개의 원소로 이루어진 집합에서 만들 수 있는 전체 순열의 개수는 n!이며, 여기서 "!"는 팩토리얼(factorial)을 의미합니다.

입력 및 출력 예시

입력: n = 5, r = 4
출력: 120

계산 과정 설명

P(5, 4) = 5! / (5 − 4)! = 120 / 1 = 120
5! = 1 × 2 × 3 × 4 × 5 = 120

C 프로그램 예제 코드

먼저 팩토리얼을 계산하는 함수 fact()를 정의한 뒤, n!을 (n − r)!로 나누어 nPr 값을 구합니다.

#include <stdio.h>

long int fact(int x) {
    int i;
    long int f = 1;
    for (i = 2; i <= x; i++) {
        f = f * i;
    }
    return f;
}

int main() {
    int n = 5, r = 4;
    long int npr;
    npr = fact(n) / fact(n - r);
    printf("%ld\n", npr);
    return 0;
}

코드 동작 원리

  1. fact(n) 함수가 5! = 120을 계산합니다.
  2. fact(n − r) 함수가 1! = 1을 계산합니다.
  3. 두 값을 나누어 120 ÷ 1 = 120이라는 최종 결과를 화면에 출력합니다.

알아두면 좋은 점

  • 순열은 순서가 중요한 경우의 수를 셀 때 사용하며, 조합(nCr)과 달리 나열 순서를 구분합니다.
  • r = n일 경우 P(n, n) = n!이 되어 전체 순열의 개수와 같아집니다.
  • n이 커지면 팩토리얼 값이 급격히 증가하므로, 오버플로우를 방지하려면 long int처럼 표현 범위가 넓은 자료형을 사용하는 것이 좋습니다.