博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Light Oj 1005
阅读量:4551 次
发布时间:2019-06-08

本文共 777 字,大约阅读时间需要 2 分钟。

题意: 从 n*n 的棋盘中放置 K 个 行和列不冲突的棋子

思路: 组合数学, 先选 k 个 行, k 个列, 就是 C(n,k) ^ 2;

然后 K 个棋子不相同, K ! 全排列

#include
using namespace std;typedef long long LL;LL Num[40][40];void Init(){ Num[0][0] = 1; for(int i = 1; i <= 30; ++i) { Num[i][0] = Num[i][i] = 1; Num[i][1] = i; for(int j = 2; j < i; ++j) Num[i][j] = Num[i-1][j] + Num[i-1][j-1]; }}int main(){ Init(); int t, n, k; cin >> t; for(int kase = 1; kase <= t; ++kase) { cin >> n >> k; LL ans = 0; if(k <= n) { ans = Num[n][k] * Num[n][k]; for(LL i = 1; i <= k; ++i) ans = ans * i; } printf("Case %d: %lld\n",kase, ans); } return 0;}

 

转载于:https://www.cnblogs.com/aoxuets/p/4910007.html

你可能感兴趣的文章
yii 常用的多表查询
查看>>
带符号的整数做减法
查看>>
Cmder之vim配置
查看>>
SAP库龄表
查看>>
tomcat加密
查看>>
WebDriver的工作原理
查看>>
js call 理解
查看>>
ES6笔记01
查看>>
凯撒密码、GDP格式化输出、99乘法表
查看>>
linux下获取外网IP
查看>>
引用阿里巴巴图标库
查看>>
【学步者日记】实现破碎效果 Fracturing & Destruction 插件使用
查看>>
迷宫全解
查看>>
flex布局,如果其中一个过宽,会影响另个一的
查看>>
js---加入收藏夹
查看>>
泛型的优点
查看>>
一个研究生毕业以后的人生规划
查看>>
mysql 打开sql日志,记录所有sql
查看>>
vim less vi 不显示富文本 ESC
查看>>
PhantomJS 基础及示例 (转)
查看>>