lmarkov

Calculation With Factorials

Dec 10th, 2012
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.92 KB | None | 0 0
  1. /*
  2.  * Write a program that calculates N!*K! / (K-N)! for given N and K (1<N<K).
  3. */
  4.  
  5. using System;
  6. using System.Numerics;
  7.  
  8. class CalculationWithFactorials
  9. {
  10.     static void Main()
  11.     {
  12.         BigInteger numberN, numberK, result;
  13.         string invalidInput = "Please enter a valid number! (1 < N < K)" + Environment.NewLine;
  14.  
  15.         while (true)
  16.         {
  17.             BigInteger factorial = 1;
  18.  
  19.             Console.WriteLine("Enter a value for K: ");
  20.             while (!(BigInteger.TryParse(Console.ReadLine(), out numberK) && numberK > 2))
  21.             {
  22.                 Console.WriteLine(invalidInput);
  23.                 Console.WriteLine("Enter a value for K: ");
  24.             }
  25.  
  26.             Console.WriteLine("Enter a value for N: ");
  27.             while (!(BigInteger.TryParse(Console.ReadLine(), out numberN) && numberN > 1 && numberN < numberK))
  28.             {
  29.                 Console.WriteLine(invalidInput);
  30.                 Console.WriteLine("Enter a value for N: ");
  31.             }
  32.  
  33.             BigInteger differenceKN = numberK - numberN;
  34.  
  35.             for (BigInteger i = 2; i <= differenceKN; i++)
  36.             {
  37.                 factorial = factorial * i;
  38.             }
  39.             BigInteger factorialKN = factorial;
  40.             if (numberN != differenceKN)
  41.             {
  42.                 for (BigInteger i = differenceKN + 1; i <= numberN; i++)
  43.                 {
  44.                     factorial = factorial * i;
  45.                 }
  46.             }
  47.             else
  48.             {
  49.                 factorial = factorialKN;
  50.             }
  51.            
  52.             factorial = factorial * factorial;
  53.             for (BigInteger i = numberN + 1; i <= numberK; i++)
  54.             {
  55.                 factorial = factorial * i;
  56.             }
  57.             result = factorial / factorialKN;
  58.             Console.WriteLine("{0}! * {1}! / ({0} - {1})! = {2}" + Environment.NewLine, numberK, numberN, result);
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment