简介:有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 long
using 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;
}