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;
}

浙公网安备 33010602011771号