/// <summary> /// https://projecteuler.net/problem=53 /// </summary> /// <param name="arguments"></param> /// <returns></returns> public static Result CombinatoricSelections(Problem arguments) { var limit = arguments.IntNumber; var count = 0; //todo: use factaorial in loop and cache it in array for (int n = 1; n <= 100; n++) { for (int r = 1; r < n; r++) { if (UtilityMath.BinomialCoefficients(n, r) >= limit) { count++; } } } var answer = count.ToString(); var message = string.Format("{0} not necessarily distinct, values of nCr, for 1 ≤ n ≤ 100, are greater than {1}.", answer, limit); if (Answers[arguments.Id] != answer) { message += string.Format(" => INCORRECT ({0})", Answers[arguments.Id]); } var result = new Result(arguments.Id, message) { Answer = answer }; return(result); }