UVa 11609 - Teams
来源:互联网 发布:mac 电视直播 编辑:程序博客网 时间:2024/05/29 04:19
题目:n个人中取出k个人组成一个小组,并且其中有一名组长,问有多少种取法。
分析:分治、组合数学。F(n) = C(n,1)*1 + C(n,2)*2 + ... = sum(C(n,i)*i)
推导:C(n,i)*i=n*...*(i+1)/ [i*(i-1)*...*1] * i=n * [(n-1)*...*i]/ [i*...*1]=C(n-1,i)*n
F(n)= n*sum(C(n-1,i))= n * 2^(n-1)
利用快速幂求解即可。
说明:使用long long防止溢出;用%I64d竟然PE(⊙_⊙)。
#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;long long N,MOD = 1000000007;long long spow( long long x, long long n ){if ( n == 0LL ) return 1LL;if ( n == 1LL ) return x%MOD;long long v = spow( x, n/2LL );if ( n%2LL == 1LL ) return ((v*v)%MOD*x)%MOD;else return (v*v)%MOD;}int main(){int T;while ( cin >> T )for ( int t = 1 ; t <= T ; ++ t ) {cin >> N;printf("Case #%d: %lld\n",t,spow(2LL,N-1LL)*N%MOD);}return 0;}
0 0
- UVa:11609 Teams
- UVa 11609 - Teams
- uva 11609 - Teams
- UVA 11609 Teams
- Teams(UVA 11609)
- UVA 11609 Teams
- uva 11609Teams
- UVA-11609 Teams
- UVa 11609 Teams (组合数学)
- UVA-11609-Teams-组合计数
- UVa 11609 Teams (组合数学)
- UVA 11609 - Teams 组合、快速幂取模
- uva 11609 - Teams(组合数学+快速幂)
- UVA - 11609 Teams (排列组合数公式)
- UVa 11609 - Teams (组合数学)
- UVa 11609 Teams(快速幂+数学)
- UVa-11609 Teams(组合+快速幂)
- Uva 11609 - Teams 解题报告(组合数学)
- 位操作小技巧
- 敌兵布阵(树状数组)
- poj 2528 (线段树_离散化)
- KVO的概述与使用
- 计蒜客学习之旅--1--A+B+C问题
- UVa 11609 - Teams
- VB实现Base64 编解码
- MS Active Accessibility 接口技术编程尝试
- 常量字符串的排列问题
- nescafe29
- Vision引擎组建系统中Lua 脚本与跟随路径介绍
- 【索引】BestCoder Round #2
- java中transient关键字的作用
- 自定义View----不消失的Toast