👩‍💻/C, C++, STL

제 16장 실력 다지기 연습문제 02 [순열과 조합]

글로랴 2021. 6. 30. 20:13
#include <stdio.h>

int Fact(int n)
{
	int num = 1;   //★

	for (int i = 1; i <= n; i++)
	{
		num *= i;
	}
	return num;
}

int Perm(int n, int r)
{
	int f = Fact(n);

	int num = 1;   //★

	for (int i = 1; i <= (n - r); i++)
	{
		num *= i;
	}

	return f / num;

	// 한 줄로 정의: return Fact(n) / Fact(n - r); 
}

int Combi(int n, int r)
{
	int p = Perm(n, r);
	int num = 1;   //★

	for (int i = 1; i <= r; i++)
	{
		num *= i;
	}

	return p / num;

	// 한 줄로 정의: return Perm(n, r) / Fact(r);
}
int main()
{
	int n1, n2;

	printf("두 개의 자연수 입력>> ");
	scanf("%d %d", &n1, &n2);

	printf("순열 값: %d\n", Perm(n1, n2));
	printf("조합 값: %d\n", Combi(n1, n2));

	return 0;
}
반응형