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;
    }
}
原文地址:https://www.cnblogs.com/137033036-wjl/p/4683357.html