Lightoj 1095 容斥原理
来源:互联网 发布:为奴十二年 知乎 编辑:程序博客网 时间:2024/06/05 05:33
直接运用容斥原理,组合数学,P100,机械工业出版社
补一下维基百科的:http://zh.wikipedia.org/wiki/%E6%8E%92%E5%AE%B9%E5%8E%9F%E7%90%86 百度简直是渣渣-_-不过维基上的应该给出的时一个推论,我们要运用它原来的公式
不过有个地方要注意的就是 a = ( a + b + MOD )% MOD,当a可能为小数的时候,一定要加一个MOD之后再取余
AC代码如下:
#include <iostream>#include <cstdio>#include <cstring>#include <cstdlib>#include <algorithm>using namespace std;#define MOD 1000000007Llong long dp[1010][1010];long long combination( int n, int k ){//组合if( dp[n][k] != -1 ){return dp[n][k];}if( k == 0 || n == k ){return dp[n][k] = 1;}if( n < k ){return dp[n][k] = 0;}return dp[n][k] = ( combination( n - 1, k - 1 ) % MOD + combination( n - 1, k ) % MOD ) % MOD;}long long factorial( long long n ){//阶乘long long ans = 1;for( int i = 1; i <= n; i++ ){ans = ( ( ans % MOD ) * ( i % MOD ) ) % MOD;}return ans;}long long f( long long a, int b ){//a的b次方long long ans = 1;for( int i = 1; i <= b; i++ ){ans *= a;}return ans;}int main(){int T, Case = 1;int N, M, K;long long ans = 1;memset( dp, -1, sizeof( dp ) );for( int i = 1000; i >= 1; i-- ){for( int j = 1000; j >= 1; j-- ){if( dp[i][j] == -1 ){combination( i, j );}}}cin >> T;while( T-- ){cin >> N >> M >> K;ans = 0;for( int i = 0; i <= M - K; i++ ){long long temp1 = combination( M - K, i ) % MOD;long long temp2 = factorial( N - K - i ) % MOD;long long temp3 = ( temp1 * temp2 ) % MOD;if( i % 2 == 0 ){ans = ans + temp3 + MOD;}else{ans = ans - temp3 + MOD;}ans %= MOD;}ans = ( ans % MOD ) * ( combination( M, K ) % MOD ) % MOD;cout << "Case " << Case++ << ": " << ans << endl;}return 0;}
0 0
- Lightoj 1095 容斥原理
- LightOJ 1095 Arrange the Numbers (容斥原理)
- 【LightOJ】1414 - February 29(容斥原理)
- lightoj-1414-February 29【容斥原理&&细节】
- LightOJ 1144 容斥
- [容斥] LightOJ 1117 - Helping Cicada
- [容斥+lucas] LightOJ 1124 - Cricket Ranking
- LightOJ-1117 Helping Cicada(容斥定理)
- lightoj 1117 - Helping Cicada(容斥)
- 容斥原理
- 容斥原理 POJ3904
- 【容斥原理】八
- 【八】容斥原理
- 广义容斥原理
- 容斥原理
- 容斥原理 专题
- 容斥原理 专题
- hdu4390 容斥原理
- centos下的freeradius安装dialup_admin
- 为何不将仅仅路过的数据包导入本地协议栈呢
- 哪些seo技术用不得
- 次世代框架学习(一)
- 苹果系列手机地图为何总是仍存漏洞?
- Lightoj 1095 容斥原理
- 黑马程序员--字符流与字节流区别
- 金融软件测试--Dividend 分红
- linux/windows环境下mysql数据库启动、停止、重启命令
- 【C++收集问题】学习笔记
- 设计模式 - 桥接模式
- 海带
- Win7下打不开CHM文档解决方法
- SRM602 (div2)