SGU 222 Little Rooks

排列组合

 1 #include<stdio.h>

 2 #include<string.h>

 3 #include<stdlib.h>

 4 int n, k;

 5 int COM(int n, int m)

 6 {

 7     if(m > n - m) m = n - m;

 8     int i, j, res = 1;

 9     for(i = n, j = 1; i > n - m; i --)

10     {

11         res *= i;

12         for(; j <= m && res % j == 0; res /= j, j ++);

13     }

14     return res;

15 }

16 int main()

17 {

18     while(scanf("%d%d", &n, &k) != EOF)

19     {

20         if(k > n)

21         {

22             printf("0\n");

23             continue;

24         }

25         int ans = 1;

26         for(int i = n; i > n - k; i --)

27             ans *= i;

28         ans *= COM(n, k);

29         printf("%d\n", ans);

30     }

31     return 0;

32 }

 

你可能感兴趣的:(OO)