码迷,mamicode.com
首页 > 其他好文 > 详细

[bzoj1430]小猴打架_prufer序列

时间:2018-12-30 11:42:35      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:题目   pru   string   highlight   class   main   using   namespace   int   

小猴打架 bzoj-1430

题目大意:题目链接。

注释:略。


想法

我们发现打架的情况就是一棵树。

我们只需要把确定树的形态然后乘以$(n-1)!$表示生成这棵树时边的顺序。

一共$n$个节点我们发现数的形态一共有$n^{n-2}$种。

所以答案就是$n^{n-2}\cdot (n-1)!$。

Code:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define mod 9999991 
using namespace std;
typedef long long ll;
ll qpow(ll x,ll y)
{
	ll ans=1; while(y)
	{
		if(y&1) (ans*=x)%=mod;
		y>>=1;
		(x*=x)%=mod;
	}
	return ans;
}
int main()
{
	ll n; cin >> n ;
	ll ans=1; for(int i=1;i<=n-1;i++) (ans*=i)%=mod;
	printf("%lld\n",qpow(n,n-2)*ans%mod);
	return 0;
}

小结:$prufer$序列还是很好理解的。

[bzoj1430]小猴打架_prufer序列

标签:题目   pru   string   highlight   class   main   using   namespace   int   

原文地址:https://www.cnblogs.com/ShuraK/p/10198806.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!