---恢復內容開始---
題意:
給出n代表有n組測試數據,每組數據給出總人數,取任意人數組成小隊,小隊的任意成員都可以成為隊長。問能組成幾種不同的小隊。注:當小隊隊員相同但隊長不同時,算新的小隊。
Sample Input
3
1
2
3
Sample Output
Case #1: 1
Case #2: 4
Case #3: 12
分析:
很簡單的數學問題,用c(i,n)代表從n個人中取i個組成小隊的取費,之後再乘i。這樣就算出i個人能在組成小隊的個數。
代碼:
#include<iostream>
using namespace std;
long long cf(long long i,long long n)
{
long long ans = 1;
while(n)
{
if(n&1)
{
ans=ans*i%1000000007;
}
i=i*i%1000000007;
n>>=1;
}
return ans;
}
int main()
{
int n;
int i;
cin>>n;
for(i=1;i<=n;i++)
{
int x;
cin>>x;
long long y=cf(2,x-1)*x%1000000007;
cout<<"Case #"<<i<<": "<<y<<endl;
}
}