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 ", kase, (ans * n) % M); 29 } 30 31 return 0; 32 }