您的位置:首页 > Web前端

【BZOJ1430】小猴打架(Prufer编码)

2017-02-28 13:57 459 查看

题意:求n个点带编号生成树的不同加边序列个数

n<=10^6

思路:

WJMZBMR:额。首先他们打架的关系是一颗无根树,就有n^(n-2)种情况,还有打架的顺序,是(n-1)!种,乘起来就可以了囧。。

1 const mo=9999991;
2 var n,k,i:longint;
3     ans,y:int64;
4 begin
5  assign(input,'bzoj1430.in'); reset(input);
6  assign(output,'bzoj1430.out'); rewrite(output);
7  readln(n);
8  k:=n-2; y:=n;
9  ans:=1;
10  while k>0 do
11  begin
12   if k and 1=1 then ans:=ans*y mod mo;
13   y:=y*y mod mo;
14   k:=k>>1;
15  end;
16  for i:=1 to n-1 do ans:=ans*i mod mo;
17  writeln(ans);
18  close(input);
19  close(output);
20 end.

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: