Lightoj 1005

来源:互联网 发布:机械设计手册2008软件 编辑:程序博客网 时间:2024/05/22 12:16

题意: 给一个n*n的棋盘,求放k个車的方法数。
思路:数学排列组合。 k>n 为0;
ans=C(n,k) * C(n,k) * k!。

AC代码:

#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#define ll long longusing namespace std;ll n,k;ll C(int b,int a) {  //求C(b,a);    ll s=1;    for(int i=1; i<=a; i++) {        s=s*(b-i+1)/i;    }    return s;}int main(){    int t; scanf("%d",&t);    for(int cas=1; cas<=t; cas++) {        scanf("%d%d",&n,&k);        printf("Case %d: ",cas);        if(k>n) {            printf("0\n"); continue;        }        ll c=C(n,k);        ll Ans = 1;        for (int i = 1; i <= k; i++)            Ans *= i;        ll ans=c*c*Ans;        printf("%lld\n",ans);    }    return 0;}
0 0