2017百度之星初赛(B) 1001 Chess(思维+Lucas)
来源:互联网 发布:软件评测师培训费用 编辑:程序博客网 时间:2024/06/06 01:14
题目大意:
给你一个 m*n (0< m <1000,0< n <1000)的棋盘,问你在上面放最多的棋子的摆放方法的种数。要求:对于每一个棋子,它的上面每一行的棋子都必须在它的左边。且每一行只能有一个棋子。
分析:
其实仔细考虑,这个问题对棋盘来说是对角线对称的,所以 m n 的顺序对这道题的结果无关。所以现在我们不妨假设:
代码:
#include<bits/stdc++.h>#define LL long longusing namespace std;const int mod=1000000007;int t,m,n;LL qmod(LL x,int n)//快速幂取模{ LL ans=1; for(;n;n>>=1) { if(n&1)ans=(ans*x)%mod; x=x*x%mod; } return ans;}LL C(int n,int m)//组合数取模{ if(m>n)return 0; LL ans=1; for(int i=1;i<=m;i++) { ans=ans*((n-m+i)*qmod(i,mod-2)%mod)%mod; } return ans;}int main(){ scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m);//n<m int temp=0; if(n>m) { temp=n; n=m; m=temp; } printf("%d\n",C(m,n)%mod); }}
阅读全文
0 0
- 2017百度之星初赛(B) 1001 Chess(思维+Lucas)
- 2017百度之星初赛(B)-1001Chess
- Chess(百度之星初赛B)
- HDU 6114 Chess(DP)2017百度之星初赛(B) 1001
- 2017百度之星初赛(B)1001Chess------hdu6114
- hdu6114 2017"百度之星"初赛(B)1001Chess(dp)
- 百度之星初赛(B)--Chess---简单dp
- 2017百度之星初赛:B-1001. Chess
- HDU-2017"百度之星"程序设计大赛-初赛(B)-1001-Chess
- 2017年百度之星编程赛初赛B场-1001-Chess
- 2017百度之星初赛(B) 1001 Chess(找规律+递推求组合数)
- 百度之星初赛B——Chess
- 关于百度之星初赛B的A题Chess
- 2017百度之星初赛B场第一题Chess--简单杨辉三角问题
- 2017 百度之星B轮初赛(Chess, 度度熊的交易计划, 小小粉丝度度熊)
- 【百度之星2014~初赛(第二轮)解题报告】Chess
- 2017百度之星初赛b
- 百度之星初赛(B)--1006小小粉丝度度熊
- HDU
- 和为S的两个数字
- 鼠标滚动超过1屏显示置顶图标
- 矩阵乘法
- Git 的origin和master分析
- 2017百度之星初赛(B) 1001 Chess(思维+Lucas)
- JAVA笔记-集合
- 合并两个排序的链表
- iOS
- 那些年写过的Bug——List remove
- Java读取Excel文件
- 安装SQL Server 2008R2 报错“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本”解决方法
- Hive JOIN使用详解
- (转)【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?