码迷,mamicode.com
首页 > 其他好文 > 详细

Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )

时间:2014-10-22 20:15:19      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   strong   sp   

 

Uva 11609 - Team ( 组合数学 + 二项式性质 + 快速幂取模 )

 

题意:
有N个人,选一个或多个人参加比赛,其中一名当队长,有多少种方案?
(如果参赛者完全相同但是队长不同,也算是一种情况)
[ 1<=n <= 10^9 ]

 

分析:

这题要用到组合式公式的性质
转化之后快速幂取模轻松搞定之

 

bubuko.com,布布扣

 

代码:
bubuko.com,布布扣
//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 1000000007

ULL 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 ( 组合数学 + 二项式性质 + 快速幂取模 )

标签:style   blog   http   color   io   os   ar   strong   sp   

原文地址:http://www.cnblogs.com/BigBallon/p/4043945.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!