Programming contests

Magas szintű programozási nyelvek 1, egyéni verseny, 2016. április 10.

April 10, 2016 10:00 AM – April 10, 2016 3:00 PM

Combinations

Computing the exact number of ways that N things can be taken M at a time can be a great challenge when N and/or M becomes very large. Challenges are the stuff of contests. Therefore, you are to make just such a computation given the following:

Given 5 ≤ N ≤ 100 and 5 ≤ M ≤ 100 and M ≤ N, compute the exact value of C = N! / ((N – M)! · M!).

You may assume that the final value of C will fit in a 32-bit signed integer (Pascal: longint, C: long).

For the record, the exact value of 100! is:

   93 326 215 443 944 152 681 699 238 856 266 700 490 715 968 264 381 621
      468 592 963 895 217 599 993 229 915 608 941 463 976 156 518 286 253
      697 920 827 223 758 251 185 210 916 864 000 000 000 000 000 000 000 000

Input Specification

The input to this program will be one or more lines, each containing zero or more leading spaces, a value for N, one or more spaces, and a value for M. The last line of the input will contain a dummy (NM) pair, with both values equal to zero. Your program should terminate when this line is read.

Output Specification

The output for each test case should be in the form:

N things taken M at a time is C exactly.

Sample Input

  1.      100  6
  2.       20  5
  3.       18  6
  4.        0  0
download as text file

Output for Sample Input

  1. 100 things taken 6 at a time is 1192052400 exactly.
  2. 20 things taken 5 at a time is 15504 exactly.
  3. 18 things taken 6 at a time is 18564 exactly.
download as text file
University of Debrecen; Faculty of Informatics; v. 03/01/2019