【luogu比赛】父子
题目描述
对于全国各大大学的男生寝室,总是有各种混乱的父子关系。
那么假设现在我们一个男生寝室有不同的 n 个人,每个人都至多有一个“爸爸”,可以有多个“儿子”,且有且只有一个人没有“爸爸”(毕竟是室长,还是要给点面子,当然了,室长人人当嘛)。
那么现在问题来了,对于一个有 n 个人的寝室,最多可能存在多少种父子关系,当然每个人之间都必须要有直接或间接的父子关系。
输入
第一行一个 正整数 t,表示有组数据。
接下来 t 行,每行一个整数 n,表示有 n 个人。
输出
共 t 行,每行一个整数,求关系个数。
由于答案可能较大,则我们需要输出答案对 1e9+9 取模的值。
样例输入
1 323
样例输出
283888610
对于 100% 的数据,t≤10^4,n≤10^9。
题解
由Cayley 公式:我们可以直接推出n个点的无向完全图的生成树的计数:nn-2 , 即n个点的有标号无根树的计数。
再考虑有向,每个点都可以作为根节点,那么答案为: nn-1 。
#include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define ll long long const int mod=1e9+9; ll T,n; ll qsm(ll a,ll n){ ll ans=1;a%=mod; for(int i=n;i;i>>=1,a=(a*a)%mod) if(i&1) ans=(ans*a)%mod; return ans%mod; } int main(){ cin>>T; while(T--){ cin>>n; printf("%lld\n",qsm(n,n-1)); } return 0; }
浙公网安备 33010602011771号