首页 > 代码库 > Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )
Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )
Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )
题意:有N个人,选一个或多个人参加比赛,其中一名当队长,有多少种方案?(如果参赛者完全相同但是队长不同,也算是一种情况)[ 1<=n <= 10^9 ]
分析:这题要用到组合式公式的性质转化之后快速幂取模轻松搞定之
代码:
//Uva 11609 - Team /* 组合数公式 + 二项式系数性质 + 快速幂 手动自己推 -> F[n] = C(n,1)*1 + C(n,2)*2 + C(n,n)*n -> F[n] = Σ((i*C(n,i)) -> F[n] = Σ(C(n,i)*C(i,1)) -> F[n] = n* Σ(c(n-1,i-1)) -> F[n] = n* 2^(n-1) Σ(c(n-1,i-1)) 1<= i <= n 所以是全集, == 2^(n-1) */#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef unsigned long long ULL;#define MOD 1000000007ULL pow_mod(ULL a,ULL b){ ULL ans = 1; while(b) { if(b & 1) ans = ans * a % MOD; a = (a%MOD) * (a%MOD) % MOD; b >>= 1; } return ans;}void Orz(){ int cas = 1 , t; ULL ans, n; scanf("%d",&t); while(t--) { scanf("%llu",&n); printf("Case #%d: ",cas++); printf("%llu\n",(pow_mod(2,n-1)*n) % MOD); } }int main(){ Orz(); return 0;}
Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。