UVa11609

来源:互联网 发布:国家人文历史杂志 知乎 编辑:程序博客网 时间:2024/06/16 22:50

简介:有n个人,选一个或多个人参加比赛,从中选1个人当队长,有多少种方案

分析:
这里写图片描述
可以理解为,从n个人中选i个,再从这i个中选一个当队长

直接计算上式,时间不优秀,
所以我们考虑画柿子
这里写图片描述
上式实际上就是杨辉三角的第n行,每一个数乘以一个系数相加的结果

当n=5时
ans
=1*C(5,1)+2*C(5,2)+3*C(5,3)+4*C(5,4)+5*C(5,5)
=5+20+30+20+5
=31+26+26+6+1
=32*5/2

ans=(n*2^n)/2=n*2^(n-1)

//这里写代码片#include<cstdio>#include<cstring>#include<iostream>#define ll long longusing namespace std;const int mod=1000000007;ll KSM(ll a,int b){    ll t=1;    a%=mod;    while (b)    {        if (b&1)           t=(t%mod*a%mod)%mod;        b>>=1;        a=(a%mod*a%mod)%mod;    }    return t%mod;}int main(){    int n;    while (scanf("%d",&n)!=EOF&&n)    {        ll ans=(n%mod*KSM(2,n-1))%mod;        printf("%lld\n",ans);    }    return 0;}
原创粉丝点击