c语言组合方案数..

描述
求C(N, M),即求M个数中选N个数的组合方案数

格式
输入格式
第一行一个正整数T (T<=10), 表示有T组测试数据。第二行~第T+1行,每行有2个正整数N,M (1<=N, M<=20)。

输出格式
对于每组输入N,M,输出一行,该行有一个数,为C(N, M)值。

样例
样例输入
2
3 5
2 4
样例输出
10
6

C(N,M) = N的阶乘除以M的阶乘乘以(N-M)的阶乘

#include <stdio.h>
long long jc(int n)
{
    long long k=1;
    for(int i=1;i<=n;i++)
        k*=i;
    return k;
}

int main()
{
    int n;
    int a,b;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d%d",&a,&b);
        printf("%lld\n",jc(b)/(jc(a)*jc(b-a)));
    }
    return 0; 
}

#include <stdio.h>
int fact(int n){
    int s=1,i;
    for(i=1;i<=n;i++){
        s*=i;
    }
    return s;
}
int main(void) {
    int t,i,m,n;
    scanf("%d",&t);
    for(i=0;i<t;i++){
        scanf("%d %d",&m,&n);
        printf("%d\n",fact(n)/(fact(m)*fact(n-m)));
    }
    return 0;
}