---恢復內容開始---
題意:
給出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; } }