组合选择

作者:Jonathan Scott Duff

https://projecteuler.net/problem=53

从五个中选三个,恰好有十种方法,12345

123、124、125、134、135、145、234、235、245 和 345

在组合数学中,我们使用符号 ⁵C₃ = 10。

一般来说,

ⁿCᵣ = n! / r!(n−r)! ,where r ≤ n, n! = n×(n−1)×...×3×2×1, and 0! = 1.

直到 n = 23 时,才有一个值超过一百万:²³C₁₀ = 1144066。

对于 1 ≤ n ≤ 100,ⁿCᵣ 的值(不一定是不同的)有多少个大于一百万?

源代码:prob053-duff.pl

use v6;

# brute force

sub postfix:<!>($n) { return [*] 1..$n }

sub infix:<C>($n,$r)  { $n! / ($r! * ($n-$r)!); }

my $count = 0;
for 1..100 -> $n {
    for 1..$n -> $r {
        $count++  if $n C $r > 1_000_000;
    }
}
say $count;