题意:就是给你一个n,求
1∗C1n+2∗C2n+3∗C3n+...+n∗Cnn
思路:原式就等于
n∗(C0n−1+C1n−1+...Cn−1n−1+Cnn)
=
n∗2n−1
然后就是一个快速幂
证:原式
=∑nk=1k∗Ckn=∑nk=1k∗n!k!(n−k)!=n∗∑nk=1(n−1)!(k−1)!(n−k)!=n∗∑nk=1(n−1)!(k−1)!(n−k)!=n∗∑n−1k=0(n−1)!k!(n−k−1)!=n∗2n−1
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<iostream>
#define mod 1000000007
using namespace std;
long long Pow(long long x,long long n) {
long long ans=1;
long long tt=x;
while(n) {
if(n&1) {
ans=(ans*tt)%mod;
}
tt=(tt*tt)%mod;
n/=2;
}
return ans;
}
int main()
{
int t;
long long n,ans;
int kase=0;
scanf("%d",&t);
while(t--) {
scanf("%lld",&n);
ans=n*Pow(2,n-1)%mod;
printf("Case #%d: %lld\n",++kase,ans);
}
return 0;
}