RosettaCodeData/Task/Evaluate-binomial-coefficients/D/evaluate-binomial-coefficients-1.d

17 lines
420 B
D
Raw Permalink Normal View History

2015-02-20 00:35:01 -05:00
T binomial(T)(in T n, T k) pure nothrow {
2013-04-10 16:57:12 -07:00
if (k > (n / 2))
k = n - k;
T bc = 1;
2015-02-20 00:35:01 -05:00
foreach (T i; T(2) .. k + 1)
2013-04-10 16:57:12 -07:00
bc = (bc * (n - k + i)) / i;
return bc;
}
void main() {
2014-01-17 05:32:22 +00:00
import std.stdio, std.bigint;
2015-02-20 00:35:01 -05:00
foreach (const d; [[5, 3], [100, 2], [100, 98]])
2013-04-10 16:57:12 -07:00
writefln("(%3d %3d) = %s", d[0], d[1], binomial(d[0], d[1]));
2014-01-17 05:32:22 +00:00
writeln("(100 50) = ", binomial(100.BigInt, 50.BigInt));
2013-04-10 16:57:12 -07:00
}