您的位置:首页 > Web前端

bzoj 1430: 小猴打架 prefer编码

2016-11-15 21:50 363 查看

题意

一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友。每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友。经过N-1次打架之后,整个森林的小猴都会成为好朋友。 现在的问题是,总共有多少种不同的打架过程。 比如当N=3时,就有{1-2,1-3}{1-2,2-3}{1-3,1-2}{1-3,2-3}{2-3,1-2}{2-3,1-3}六种不同的打架过程。

n<=1000000

分析

答案就是nn−2∗(n−1)!

用prufer编码来证。

代码

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#define MOD 9999991
#define ll long long
using namespace std;

int main()
{
int n;
scanf("%d",&n);
int ans=1;
for (int i=1;i<=n-2;i++)
ans=(ll)ans*n%MOD*i%MOD;
ans=(ll)ans*(n-1)%MOD;
printf("%d",ans);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: