Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Semrush - keyword research tool

Turn ChatGPT, Claude, Gemini, And CoPilot Into Your Personal Assistant, Business Coach, Content Creator, And More

AFFILIATE MARKETING Your all-in-one performance engine Manage affiliates, creators, and customer referrals in one unified platform—turning every partnership into measurable growth
Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

42,685 questions

55,437 answers

573 users

How to compute the total number of lottery combinations for choosing 6 out of 37 and 1 power out of 7 in Pascal

1 Answer

0 votes
program LotteryCombinations;

{
  This program computes the total number of lottery combinations for:
    - choosing 6 numbers out of 37
    - choosing 1 power number out of 7

  Total combinations = C(37,6) * C(7,1)

  It uses an efficient multiplicative formula for binomial coefficients:
      C(n, k) = product(i = 1..k) of (n - k + i) / i

  This avoids huge factorials (e.g., 37! is far too large for 64-bit integers)
  and keeps intermediate values small and exact.
}

{$mode objfpc}{$H+}

function BinomialCoefficient(n, k: UInt64): UInt64;
var
  i: UInt64;
  resultValue: UInt64;
begin
  if k > n then
  begin
    Result := 0;
    Exit;
  end;

  { Use symmetry: C(n, k) = C(n, n-k) }
  if k > n - k then
    k := n - k;

  resultValue := 1;

  { Multiplicative formula }
  for i := 1 to k do
    resultValue := resultValue * (n - k + i) div i;

  Result := resultValue;
end;

var
  mainN, mainK: UInt64;
  powerN, powerK: UInt64;
  mainCombos, powerCombos, totalCombos: UInt64;

begin
  mainN := 37;
  mainK := 6;

  powerN := 7;
  powerK := 1;

  { Compute combinations }
  mainCombos := BinomialCoefficient(mainN, mainK);
  powerCombos := BinomialCoefficient(powerN, powerK);

  totalCombos := mainCombos * powerCombos;

  { Output results }
  WriteLn('Main combinations (C(37,6)): ', mainCombos);
  WriteLn('Power combinations (C(7,1)): ', powerCombos);
  WriteLn('Total lottery combinations: ', totalCombos);
end.


{
run:

Main combinations (C(37,6)): 2324784
Power combinations (C(7,1)): 7
Total lottery combinations: 16273488

}

 



answered Jul 27 by avibootz

Related questions

...