Uva 11609 Teams (组合数学)
Posted simpleknight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uva 11609 Teams (组合数学)相关的知识,希望对你有一定的参考价值。
题意:有n个人,选不少于一个人参加比赛,其中一人当队长,有多少种选择方案。
思路:我们首先C(n,1)选出一人当队长,然后剩下的 n-1 人组合的总数为2^(n-1),这里用快速幂解决
代码:
#include <iostream> #define ll long long using namespace std; const ll mod = 1000000007; ll qmod(ll a, ll b) { ll ans=1; while(b) { if(b&1) { ans=(ans*a)%mod; } b=b/2; a=(a*a)%mod; } return ans; } int main() { int t,i=0; cin>>t; while(t--) { ll n; i++; cin>>n; ll ans=n%mod; ans=(n*qmod(2,n-1))%mod; cout<<"Case #"<<i<<": "; cout<<ans<<endl; } return 0; }
#include <iostream> #define ll long long using namespace std; const ll mod = 1000000007; ll qmod(ll a, ll b) { ll ans=1; while(b) { if(b&1) { ans=(ans*a)%mod; } b=b/2; a=(a*a)%mod; } return ans; } int main() { int t,i=0; cin>>t; while(t--) { ll n; i++; cin>>n; ll ans=n%mod; ans=(n*qmod(2,n-1))%mod; cout<<"Case #"<<i<<": "; cout<<ans<<endl; } return 0; }
以上是关于Uva 11609 Teams (组合数学)的主要内容,如果未能解决你的问题,请参考以下文章