题目描述
给出 $n$ 个点,每次选择任意一条边,问这样 $n-1$ 次后得到一棵树的方案数是多少。
输入
一个整数N。
输出
一行,方案数mod 9999991。
样例输入
4
样例输出
96
题解
Prufer序列
答案完全可以看作两部分:生成一棵树的方案数*最终的树的个数。
生成一棵树的方案数即边的全排列树 $(n-1)!$ 。
最终的树的个数即Prufer序列的结论 $n^{n-2}$ ,因为 $n-2$ 个位置每个位置均有 $n$ 个选择。
本题 $n$ 较小,直接暴力计算即可。
#include <cstdio> int main() { long long n , i , ans = 1; scanf("%lld" , &n); for(i = 1 ; i <= n - 2 ; i ++ ) ans = ans * n % 9999991; for(i = 1 ; i <= n - 1 ; i ++ ) ans = ans * i % 9999991; printf("%lld " , ans); return 0; }