UVA11609题解

题目传送门

显然的计数问题,最近在肝选修2-3,看到了这题就顺手A了

我们先考虑选两个人,我们先不管队长,问题就转化为了 \(n-1\) 个人中选 \(1\) 个人的情况,即 \(C_{n-1}^1\)

接着考虑三个人的情况,一样的不管队长,问题则转化为了 \(n-1\) 个人中选 \(2\) 个人的情况,即 \(C_{n-1}^2\)

同理,我们所有的情况加在一起就是 \(\sum_{i=1}^{n-1} C_{n-1}^i\)。但不仅如此,我们并没有算 \(1\) 个人的情况,加上就是\(\sum_{i=0}^{n-1} C_{n-1}^i=2^{n-1}\),最后再加上队长的情况,就是 \(n\times2^{n-1}\) 种情况,最后取模即可。

Code:

#include<iostream>
#define int long long//计数题longlong好习惯
using namespace std;
int p=1e9+7;
int qp(int a,int b){
	int ans=1;
	while(b){
		if(b&1)ans=a*ans%p;
		b>>=1;
		a=a*a%p;
	}
	return ans;
} 
signed main(){
	int t;
	cin>>t;
	int n;
	for(int k=1;k<=t;++k){
		cin>>n;
		cout<<"Case #"<<k<<": "<<n*qp(2,n-1)%p<<endl;
	}
	return 0;
}
posted @ 2021-05-12 19:58  endlessloop  阅读(38)  评论(0)    收藏  举报