本文共 673 字,大约阅读时间需要 2 分钟。
题意: 给你一个n*n的正方形格子,填充m个车,使得两两不冲突,问你有多少种方法
解题思路: 在n行中选m行是C(n,m),在n列中选出m列 A(n,m),总共有C(n,m)*A(n,m)中方法
#include#include typedef double LL;//用__int64是个坑,要用double转换LL C(LL n,LL m){ LL sum_n = 1,sum_m = 1; for(LL i = n; i >= n-m+1; i--) sum_n *= i; for(LL i = m; i >= 1; i--) sum_m *= i; return sum_n/sum_m;}LL A(LL n,LL m){ LL sum_n = 1; for(LL i = n; i >= n-m+1; i--) sum_n *= i; return sum_n;}int main(){ int t,Case = 1; LL n,m; scanf("%d",&t); while(t--) { scanf("%lf%lf",&n,&m); printf("Case %d: ",Case++); if(n < m) printf("0\n"); else printf("%.lf\n",C(n,m)*A(n,m)); }}
转载地址:http://xfsgi.baihongyu.com/