์ฝ๊ฒ ํ์ด์ด C์ธ์ด Express 7์ฅ์ 13๋ฒ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์.
์๋ก ๋ค๋ฅธ n๊ฐ์์ r๊ฐ๋ฅผ ํํ์ฌ ์ผ๋ ฌ๋ก ๋์ดํ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์์ด(permulation)์ด๋ผ ํ๊ณ , nPr๋ก ํ์ํ๋ค. ์์ด์ ๋ค์๊ณผ ๊ฐ์ ์์ ์ด์ํ์ฌ ๊ตฌํ ์ ์๋ค. ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. n๊ณผ r์ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ์ ์๋๋ก ํ๋ผ.
HINT : for(i=n;i>=(n-r+1);i--) ์คํ์ผ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํธ๋ฆฌํ๋ค. ๋ถ๋ฑํธ์ ๋ฐฉํฅ์ ์ฃผ์ํ๋ผ.
ํ์ด
์ต์๊ฐ์ด n์ด๊ณ ์ต๋๊ฐ์ด (n-r+1)์ธ ๊ฒ๊ณผ, 1์ฉ ๊ฐ์ ๋นผ๋ฉด์ ๊ณฑํ๋ ๊ฒ์ ๋ฐ๋ณตํ๋ฏ๋ก ์กฐ๊ฑด๋ฌธ์ for(n๋ถํฐ n-r+1๊น์ง 1์ ๋นผ๋ฉด์) ๋ก ์์ฑํด์ฃผ๋ฉด ๋๊ฒ ๋ค. ์ด๊ฒ์ ํํธ์๋ ์ ํ์์ผ๋ ์ฐ๋ฆฌ๊ฐ ํ ๊ฒ์ ๊ทธ์ ์ถ๋ ฅ๋ฌธ์ ์์ฑํด์ฃผ๋ ๊ฒ ๋ฟ์ธ ๊ฒ์ด๋ ๋ค๋ฆ์๋ค!
์๋ง ๋ณต์กํด๋ณด์ด๋ ๊ฒ์ด์ง, ์ฃผ์ด์ง ์์ ์ ๋ณด๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ธ ๋ชจ๋ ์์๊ฐ ์ ์ ํ ์์ผ๋ฏ๋ก ์ฌ์ค ๋งค์ฐ ์ฌ์ด ๋ฌธ์ ์ธ ๊ฒ์ด๋ค.
์ฝ๋
#include <stdio.h>
int main(void) {
int n, r, result, i;
printf("n์ ๊ฐ: ");
scanf_s("%d", &n);
printf("r์ ๊ฐ: ");
scanf_s("%d", &r);
result = 1;
for (i = n; i >= (n - r + 1); i--) {
result = result * i;
}
printf("์์ด์ ๊ฐ์ %d์
๋๋ค.\n", result);
return 0;
}
์คํ๊ฒฐ๊ณผ
๋ฌธ์ ์์ ์ฃผ์ด์ง๋๋ก 10๊ณผ 3์ ์ ๋ ฅํด๋ณด์๋ค. ์ด๋ค ์๋ฅผ ์ ๋ ฅํด๋ ์ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋๊ธ