标签:
8 1 1 2 4 3 1 4 1 4 2 4 3 4 4 4 5
1 0 9 16 72 96 24 0
组合数学,ans=A(n,m)*C(n,m) n行放k个车,n列也能放k个车,两者摆放则乘以K!
因为做的时候已经结束了,所以借用链接下面的代码
http://blog.csdn.net/u013615904/article/details/49967753
#include<iostream> #include<cstdio> #define ULL unsigned long long using namespace std; const int maxn=35; ULL dp[maxn][maxn*maxn]; ULL C(int n,int m) { if(n<m) return 0; ULL ans=1; for(int i=0;i<m;i++) ans=ans*(ULL)(n-i)/(ULL)(i+1); return ans; } ULL A(int n,int m) { if(n<m) return 0; ULL ans=1; for(int i=0;i<m;i++) ans*=(ULL)(n-i); return ans; } ULL fuck(int n,int k) { if(dp[n][k]) return dp[n][k]; return dp[n][k]=A(n,k)*C(n,k); } int main() { //freopen("in.txt","r",stdin); int n,k,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); printf("%I64u\n",fuck(n,k)); //printf("%I64u\n",A(n,k)); //printf("%I64u\n",C(n,k)); } return 0; }
湖南工业大学创新实验室2015年新生赛(一)1001(重开)
标签:
原文地址:http://www.cnblogs.com/yinghualuowu/p/5001553.html