示例#1
0
        public void GetFactorial_Returns_Factorial_Result()
        {
            var number = 10;
            var expected = Enumerable.Range(1, number).Aggregate(1, (factorial, number) => factorial * number);

            LargeNumberMath.GetFactorial(number).Should().Be(expected.ToString());
        }
示例#2
0
 /// <summary>
 /// Run solution for problem 20.
 /// </summary>
 /// <param name="factorialInput">Factorial input.</param>
 /// <returns>Sum of factorial result's digits.</returns>
 public static int Run(int factorialInput)
 {
     return(LargeNumberMath.GetFactorial(factorialInput).ToCharArray().Aggregate(0, (sum, digit) =>
     {
         return sum + int.Parse(digit.ToString());
     }));
 }
示例#3
0
        public void GetProduct_Returns_Product_of_Two_Numbers()
        {
            var number1 = 25;
            var number2 = 24;

            LargeNumberMath.GetProduct(number1.ToString(), number2.ToString())
                .Should().Be((number1 * number2).ToString());
        }
示例#4
0
        public void GetDifference_Returns_Difference_Of_Two_Numbers_That_Results_In_A_Negative_Number()
        {
            var number1 = 103;
            var number2 = 6983;

            LargeNumberMath.GetDifference(number1.ToString(), number2.ToString())
                .Should().Be((number1 - number2).ToString());
        }
示例#5
0
        public void GetDifference_Returns_Difference_Of_Two_Numbers_That_Results_In_Zero()
        {
            var number1 = 888;
            var number2 = 888;

            LargeNumberMath.GetDifference(number1.ToString(), number2.ToString())
                .Should().Be((number1 - number2).ToString());
        }
示例#6
0
        public void GetDifference_Returns_Difference_Of_Two_Numbers()
        {
            var number1 = 348002001;
            var number2 = 968;

            LargeNumberMath.GetDifference(number1.ToString(), number2.ToString())
                .Should().Be((number1 - number2).ToString());
        }
示例#7
0
        public void GetSum_Returns_Sum_of_Two_Numbers()
        {
            var number1 = 64;
            var number2 = 25;

            LargeNumberMath.GetSum(number1.ToString(), number2.ToString())
                .Should().Be((number1 + number2).ToString());
        }
示例#8
0
        /// <summary>
        /// Run solution for problem 48.
        /// </summary>
        /// <param name="rangeThreshold">Range threshold.</param>
        /// <returns>
        /// Last 10 digits of the sum of the series up to <paramref name="rangeThreshold"/> of self
        /// powers.
        /// </returns>
        public static string Run(int rangeThreshold)
        {
            var sum = "0";

            for (var i = 1; i <= rangeThreshold; i += 1)
            {
                sum = LargeNumberMath.GetSum(sum, new Exponent(i, i).ToInt());
            }

            return(sum[^ 10..]);