Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
21
Task/Partition-function-P/Dart/partition-function-p.dart
Normal file
21
Task/Partition-function-P/Dart/partition-function-p.dart
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
BigInt partitions(n) {
|
||||
var p = List.filled(n + 1, BigInt.zero);
|
||||
p[0] = BigInt.one;
|
||||
for (var i = 1; i < n + 1; i++) {
|
||||
var k = 0;
|
||||
while (true) {
|
||||
k += 1;
|
||||
var j = (k * (3 * k - 1)) ~/ 2;
|
||||
if (j > i) break;
|
||||
var t = p[i - j];
|
||||
p[i] = (p[i] + ((k % 2 == 1) ? t : -t)) ;
|
||||
j = (k * (3 * k + 1)) ~/ 2;
|
||||
if (j > i) break;
|
||||
t = p[i - j];
|
||||
p[i] = (p[i] + ((k % 2 == 1) ? t : -t));
|
||||
}
|
||||
}
|
||||
return p[n];
|
||||
}
|
||||
|
||||
main() => print(partitions(6666));
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
const
|
||||
n = 6666;
|
||||
|
||||
var
|
||||
p: array of biginteger;
|
||||
pd: array of integer;
|
||||
|
||||
function PartiDiffDiff(n: Integer): Integer;
|
||||
begin
|
||||
if (n and 1) = 1 then result := ((n + 1) div 2)
|
||||
else Result := n + 1;
|
||||
end;
|
||||
|
||||
function partDiff(n: Integer): Integer;
|
||||
begin
|
||||
if n < 2 then result := 1
|
||||
else begin
|
||||
pd[n] := pd[n - 1] + PartiDiffDiff(n - 1);
|
||||
Result := pd[n];
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure partitionP(n: Integer);
|
||||
begin
|
||||
if n < 2 then exit;
|
||||
var psum := 0bi;
|
||||
for var i := 1 to n do
|
||||
begin
|
||||
var pdi := partDiff(i);
|
||||
if pdi > n then Break;
|
||||
var sign := -1bi;
|
||||
if (i - 1) mod 4 < 2 then sign := 1;
|
||||
psum += p[n - pdi] * sign;
|
||||
end;
|
||||
p[n] := psum;
|
||||
end;
|
||||
|
||||
begin
|
||||
SetLength(p, n + 1);
|
||||
SetLength(pd, n + 1);
|
||||
p[0] := 1bi;
|
||||
pd[0] := 1;
|
||||
p[1] := 1bi;
|
||||
pd[1] := 1;
|
||||
for var i := 2 to n do partitionP(i);
|
||||
println(p[n]);
|
||||
println('Took', milliseconds, 'milliseconds');
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue