Lah numbers: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: changed wording in the REXX section header.) |
|||
Line 39: | Line 39: | ||
<br><br> |
<br><br> |
||
=={{header|C#|C sharp}}== |
|||
{{trans|D}} |
|||
<lang csharp>using System; |
|||
using System.Linq; |
|||
using System.Numerics; |
|||
namespace LahNumbers { |
|||
class Program { |
|||
static BigInteger Factorial(BigInteger n) { |
|||
if (n == 0) return 1; |
|||
BigInteger res = 1; |
|||
while (n > 0) { |
|||
res *= n--; |
|||
} |
|||
return res; |
|||
} |
|||
static BigInteger Lah(BigInteger n, BigInteger k) { |
|||
if (k == 1) return Factorial(n); |
|||
if (k == n) return 1; |
|||
if (k > n) return 0; |
|||
if (k < 1 || n < 1) return 0; |
|||
return (Factorial(n) * Factorial(n - 1)) / (Factorial(k) * Factorial(k - 1)) / Factorial(n - k); |
|||
} |
|||
static void Main() { |
|||
Console.WriteLine("Unsigned Lah numbers: L(n, k):"); |
|||
Console.Write("n/k "); |
|||
foreach (var i in Enumerable.Range(0, 13)) { |
|||
Console.Write("{0,10} ", i); |
|||
} |
|||
Console.WriteLine(); |
|||
foreach (var row in Enumerable.Range(0, 13)) { |
|||
Console.Write("{0,-3}", row); |
|||
foreach (var i in Enumerable.Range(0, row + 1)) { |
|||
var l = Lah(row, i); |
|||
Console.Write("{0,11}", l); |
|||
} |
|||
Console.WriteLine(); |
|||
} |
|||
Console.WriteLine("\nMaximum value from the L(100, *) row:"); |
|||
var maxVal = Enumerable.Range(0, 100).Select(a => Lah(100, a)).Max(); |
|||
Console.WriteLine(maxVal); |
|||
} |
|||
} |
|||
}</lang> |
|||
{{out}} |
|||
<pre>0 1 |
|||
1 0 1 |
|||
2 0 2 1 |
|||
3 0 6 6 1 |
|||
4 0 24 36 12 1 |
|||
5 0 120 240 120 20 1 |
|||
6 0 720 1800 1200 300 30 1 |
|||
7 0 5040 15120 12600 4200 630 42 1 |
|||
8 0 40320 141120 141120 58800 11760 1176 56 1 |
|||
9 0 362880 1451520 1693440 846720 211680 28224 2016 72 1 |
|||
10 0 3628800 16329600 21772800 12700800 3810240 635040 60480 3240 90 1 |
|||
11 0 39916800 199584000 299376000 199584000 69854400 13970880 1663200 118800 4950 110 1 |
|||
12 0 479001600 2634508800 4390848000 3293136000 1317254400 307359360 43908480 3920400 217800 7260 132 1 |
|||
Maximum value from the L(100, *) row: |
|||
44519005448993144810881324947684737529186447692709328597242209638906324913313742508392928375354932241404408343800007105650554669129521241784320000000000000000000000</pre> |
|||
=={{header|D}}== |
=={{header|D}}== |