求组合数
#include <iostream>
using namespace std;
long long factorial(int n)
{
long long m = 1;
for (int i = 1; i <= n; i++)
m *= i;
return m;
}
long long C(int n, int m)
{
return factorial(n) / (factorial(m)*factorial(n - m));
}
long long RightC(int n, int m)
{
if (m < n - m)m = n - m;
long long ans = 1;
for (int i = m + 1; i <= n; i++)ans *= i;
for (int i = 1; i <= n - m; i++)ans /= i;
return ans;
}
int main()
{
cout << C(21, 1) << endl;
cout << factorial(20) << endl;
cout << factorial(21) << endl;
cout << RightC(21, 1) << endl;
cout << C(25, 12) << endl;
cout << RightC(25, 12) << endl;
return 0;
}