uva 11609
---恢复内容开始---
题意:
给出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;
}
}