排列组合 (组合数 思维题)

排列组合(pc.c/cpp/pas)

1 题目描述
T组数据,每次给定n,请求出下式的值,对10^9+7取模:

2 输入格式
第一行一个整数T,表示数据组数。
接下来T行,每一行包含一个整数n,含义如题所示。
3 输出格式
输出T行,每行包含一个整数,表示对10^9+7取模后的答案。
样例输入
2
1
2
样例输出
2
6
数据范围与约定
对于30%的数据,T<=500 , n<=10000。
对于100%的数据,T<=100000 , n<=1000000。

思路:
O(1)! O(1)! O(1)!
快找规律!! 找不到。怎么办。。。
猜答案!! 猜不到。怎么办。。。
爆零~~~

f(n) = C(n, 2n);

正文:
前30%的数据:存下阶乘以及阶乘的逆元,每次暴力做就好了。
前100%的数据:
这算是一道考察思维的题目,思路源自于一道文化课题目,原题的答案做法是暴力推式子。
当时想到了这样一个比较优秀的做法,对思维具有很好的启发作用,即考虑式子的组合意义。
首先考虑,将C(n,i)*C(n,i)换成C(n,i)*C(n,n-i)。
这样的话,就是对于每个i,计算n个中选i个的方案数乘

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值