题解 UVa11609

题目大意 给定一个正整数 (n),请求出所有小于 (n) 人的团队如果选出一个人作为队长的不同的方案数(假定这些人两两不相同)对 (10^9+7)取模的结果。

分析 即求

[sum^n_{k=1}kC_n^k=sum_{k=1}^n kfrac{n!}{k!(n-k)!}=sum_{k=1}^nnfrac{(n-1)!}{(k-1)!(n-k)!}=nsum_{k=1}^n C_{n-1}^{k-1}=n2^{n-1} ]

快速幂即可。

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll mod = 1E+9 + 7;

int T;
ll n;

ll QuickPow(ll a, ll b, ll mod)
{
	ll res = 1;
	
	a %= mod;
	while(b) {
		if(b & 1) res = res * a % mod;
		a = a * a % mod;
		b >>= 1;
	}
	return res;
}

int main()
{
	scanf("%d", &T);
	
	int t = 0;
	while(++t <= T) {
		scanf("%d", &n);
		printf("Case #%d: %lld
", t, n * QuickPow(2, n - 1, mod) % mod);
	}
}
原文地址:https://www.cnblogs.com/whx1003/p/11964025.html