排列组合问题
来源:互联网 发布:陆基巡航导弹参考数据 编辑:程序博客网 时间:2024/05/29 01:53
这数据写个暴力都拿不了30分 T_T。
C(n,i)*C(n,i)=C(n,i)*C(n,n-i) => 结合现实意义,在n个里面选 i 个,再在n个里面选n-i个的方案数。
就等价于在前n个中选 i 个,在后n各种选n-i个。而且i = 0~n => 在2*n各种选n个。
那么=C(2*n,n);
答案要对1000000007取模,需要逆元(可用费马小定理,下面是式子)
#include<iostream>#include<cstring>#include<cmath>#include<cstdio>#include<algorithm>#define LL long long#define MOD 1000000007#define N 1000000using namespace std;int T;LL ans,P[2000009],n;void init(){ LL p=1; for(LL i=1;i<=2*N;i++) p=(p*i)%MOD,P[i]=p;}LL Fast_Pow(LL x,LL p)//x^p { LL t1=1,t2=x; while(p) { if(p%2==1) t1=(t1*t2)%MOD; t2=(t2*t2)%MOD; p/=2; } return t1%MOD;}LL get_ans(int x){ return (P[2*x]*Fast_Pow(P[x]*P[x]%MOD,MOD-2))%MOD;}int main(){ init(); scanf("%d",&T); while(T--) { scanf("%d",&n); ans=get_ans(n); printf("%lld\n",ans); } return 0;}
阅读全文
1 0
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 排列组合问题
- 一个排列组合的问题
- 第一题:排列组合问题
- 字符串的排列组合问题
- 【ASP.net】--WebSite(网站) 和 WebApplication(Web应用程序)
- 程序员眼中的工作经验
- Generator 函数的含义与用法
- Linux学习笔记(5)-用户管理
- ajax中的async属性值之同步和异步及同步和异步区别
- 排列组合问题
- iText实现URL页面转PDF
- JSon、Map、List转换操作
- mysql 设计索引的原则
- 二叉树的创建及一些基本操作
- JSON追加3
- flume+kafka+storm+hdfs整合
- python函数装饰器的使用
- 什么时候使用CountDownLatch