UVa 11609 (计数 公式推导) Teams

n个人里选k个人有C(n, k)中方法,再从里面选一人当队长,有k中方法。

所以答案就是

第一步的变形只要按照组合数公式展开把n提出来即可。

 1 #include <cstdio>

 2 

 3 typedef long long LL;

 4 const LL M = 1000000007;

 5 

 6 LL pow(int p)

 7 {

 8     LL ans = 1, base = 2;

 9     while(p)

10     {

11         if(p & 1) ans = (ans * base) % M;

12         p >>= 1;

13         base = (base * base) % M;

14     }

15     return ans;

16 }

17 

18 int main()

19 {

20     //freopen("in.txt", "r", stdin);

21     int T;

22     scanf("%d", &T);

23     for(int kase = 1; kase <= T; kase++)

24     {

25         int n;

26         scanf("%d", &n);

27         LL ans = pow(n-1);

28         printf("Case #%d: %lld\n", kase, (ans * n) % M);

29     }

30 

31     return 0;

32 }
代码君

 

你可能感兴趣的:(uva)