洛谷P4981

Description

给定 n 个点,组成一棵树,有多少种组合方法;


Analysis

首先,结合题目简化意义和这句话

最多可能存在多少种父子关系

我们可以知道当且仅当有至少一个节点的儿子不同时称他们为不同的排列方法,也就是说,左右儿子的顺序并不对答案造成影响

所以这就是一道规律题

对于每个数 (n) ,输出 ({n^{n-1}})

就是一道裸的快速幂.


Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define int long long
#define mod 1000000009

using namespace std;

int t,n;

int read(){
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0' ||ch>'9'){
		if(ch=='-') w=-1;
		ch=getchar();
	}
	while(ch>='0' &&ch<='9'){
		s=(s<<1)+(s<<3)+ch-'0';
		ch=getchar();
	}
	return s*w;
}

int quic(int x,int y,int m){
	if(y==0) return 1;
	int res=quic(x*x%m,y/2,m);
	if(y&1) res=res*x%m;
	return res;
}

signed main(){
	t=read();{
		while(t--){
	        n=read();
			printf("%lld
",quic(n,n-1,mod));
		}
	}
	return 0;
}
原文地址:https://www.cnblogs.com/KnightL/p/13935209.html