[SGU222 Little Rooks]
2012-03-23 22:12
281 查看
[关键字]:数学 组合计数
[题目大意]:在一个n*n的棋盘里放k个车,问使它们不能互相攻击的摆放方案有多少种。
//====================================================================
[分析]:一开始推了半天递推公式也没解决了判重等一系列问题。然后在仔细一看题,太简单了……首先每一行每一列只能有一个车,所以找出k个车所摆放的k行k列总共有C(n,k)2种方案数,而在这k行k列中车的摆放方案共有k!种,所以最后答案就是C(n,k)2*K!(注意用int64)。
[代码]:
View Code
[题目大意]:在一个n*n的棋盘里放k个车,问使它们不能互相攻击的摆放方案有多少种。
//====================================================================
[分析]:一开始推了半天递推公式也没解决了判重等一系列问题。然后在仔细一看题,太简单了……首先每一行每一列只能有一个车,所以找出k个车所摆放的k行k列总共有C(n,k)2种方案数,而在这k行k列中车的摆放方案共有k!种,所以最后答案就是C(n,k)2*K!(注意用int64)。
[代码]:
View Code
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int n,k; long long ans; long long f(int n) { long long sum=1; for (int i=1;i<=n;++i) sum*=i; return sum; } int main() { scanf("%d%d",&n,&k); if (k>n) ans=0; else ans=(f(n)/f(k)/f(n-k))*(f(n)/f(k)/f(n-k))*f(k); printf("%I64d\n",ans); system("pause"); return 0; }
相关文章推荐
- SGU - 222 - Little Rooks (组合数)
- SGU 222 Little Rooks
- sgu 222 - Little Rooks 简单的状态压缩DP
- sgu222 Little Rooks
- SGU - 222 Little Rooks
- SGU 222 Little Rooks (组合数)
- SGU 222 Little Rooks
- SGU 222
- sgu222:Little Rooks(简单组合数学)
- sgu 222
- Sgu 132 状压dp(gtmd128)
- 组合计数(polya计数):SGU 282 Isomorphism
- 222
- 【程序8】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
- leetcode 222: Count Complete Tree Nodes
- 解题报告:SGU - 495 Kids and Prizes 期望概率
- 将a=["aaa","bbb","ccc"]转化为aaa,bbb,ccc和将a=[111,222,333]转化为111,222,333的字符串作为输出的方法
- SGU 495 Kids and Prizes (概率期望DP)
- SGU 116. Index of super-prime(完全背包+输出路径)
- 222