题目
UVa11609 Teams
题解
一眼看出来是这个式子 ∑ni=1C(n,i)?i ,先选i个人然后随便选一个当队长,化了半天化不出来。
换了个思路,先确定队长,再选队员,那就是这个式子 n?∑n?1i=0C(n?1,i) ,看到后面那一坨sigma感觉好像是杨辉三角的一层的和,画了画发现杨辉三角每一层的和依次是1,2,4,8,恩这不就出来了吗。
所以我们最后得到一个结论 ∑ni=1C(n,i)?i=n?∑n?1i=0C(n?1,i)=n?2n?1
代码
//QWsin
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int MOD=1e9+7;ll Pow(ll x,int p)
{ll ret=1;for(;p;p>>=1,x=x*x%MOD) if(p&1) ret=ret*x%MOD;return ret;
}int main()
{int T,n,kase=0;cin>>T;while(T--) {scanf("%d",&n);printf("Case #%d: %lld\n",++kase,Pow(2,n-1)*n%MOD);}return 0;
}