题意:题意说得挺绕的,其实本质上就是求n个点,可以接连出多少种不同的生成树
思路:这是Caylay定理,网上能找到证明,结果为nn−2,然后利用快速幂去求解。
代码:
#include <stdio.h>
#include <string.h>
const int long long MOD = 2000000011;
int t;
long long n;
long long pow_mod(long long n, long long k) {
if (k == 0) return 1;
if (k == 1) return n;
return (pow_mod(n * n % MOD, k / 2) * (k&1 ? n : 1)) % MOD;
}
int main() {
int cas = 0;
scanf("%d", &t);
while (t--) {
scanf("%lld", &n);
printf("Case #%d: %lld\n", ++cas, n == 1 ? 1 : pow_mod(n, n - 2));
}
return 0;
}