Data update
This commit is contained in:
parent
72eb4943cb
commit
4d5544505c
2347 changed files with 62432 additions and 16731 deletions
50
Task/Paraffins/PascalABC.NET/paraffins.pas
Normal file
50
Task/Paraffins/PascalABC.NET/paraffins.pas
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
const
|
||||
nMax = 250;
|
||||
nBranches = 4;
|
||||
|
||||
var
|
||||
rooted := (0..nMax).Select(n -> 0bi).ToArray;
|
||||
unrooted := (0..nMax).Select(n -> 0bi).ToArray;
|
||||
|
||||
function choose(m: biginteger; k: integer): biginteger;
|
||||
begin
|
||||
result := m;
|
||||
if k = 1 then exit
|
||||
else
|
||||
for var i := 1 to k - 1 do
|
||||
result := result * (m + i) div (i + 1)
|
||||
end;
|
||||
|
||||
procedure tree(br, n, l, sum: integer; cnt: biginteger);
|
||||
begin
|
||||
var s := 0;
|
||||
foreach var b in (br + 1.. nBranches) do
|
||||
begin
|
||||
s := sum + (b - br) * n;
|
||||
if s > nMax then exit;
|
||||
|
||||
var c := choose(rooted[n], b - br) * cnt;
|
||||
|
||||
if l * 2 < s then unrooted[s] += c;
|
||||
if b = nBranches then exit;
|
||||
rooted[s] += c;
|
||||
for var m := n - 1 downto 1 do
|
||||
tree(b, m, l, s, c);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure bicenter(s: integer);
|
||||
begin
|
||||
if (s and 1) = 0 then
|
||||
unrooted[s] += rooted[s div 2] * (rooted[s div 2] + 1) div 2;
|
||||
end;
|
||||
|
||||
begin
|
||||
(rooted[0], rooted[1], unrooted[0], unrooted[1]) := (1bi, 1bi, 1bi, 1bi);
|
||||
for var n := 1 to nMax do
|
||||
begin
|
||||
tree(0, n, n, 1, 1bi);
|
||||
bicenter(n);
|
||||
writeln(n, ': ', unrooted[n]);
|
||||
end;
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue