From 886cc3a2fe2fd0f2cd5de03df34b9632480dcfcf Mon Sep 17 00:00:00 2001 From: Gonzalo Diaz Date: Mon, 20 May 2024 00:56:00 -0400 Subject: [PATCH] =?UTF-8?q?[Hacker=20Rank]:=20A=20Very=20Big=20Sum=20solve?= =?UTF-8?q?d=20=E2=9C=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/hackerrank/warmup/AVeryBigSumTest.cs | 34 ++++++++++++ .../src/hackerrank/warmup/AVeryBigSum.cs | 23 ++++++++ docs/hackerrank/warmup/a_very_big_sum.md | 55 +++++++++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 algorithm-exercises-csharp-test/src/hackerrank/warmup/AVeryBigSumTest.cs create mode 100644 algorithm-exercises-csharp/src/hackerrank/warmup/AVeryBigSum.cs create mode 100644 docs/hackerrank/warmup/a_very_big_sum.md diff --git a/algorithm-exercises-csharp-test/src/hackerrank/warmup/AVeryBigSumTest.cs b/algorithm-exercises-csharp-test/src/hackerrank/warmup/AVeryBigSumTest.cs new file mode 100644 index 0000000..af05111 --- /dev/null +++ b/algorithm-exercises-csharp-test/src/hackerrank/warmup/AVeryBigSumTest.cs @@ -0,0 +1,34 @@ +namespace algorithm_exercises_csharp.hackerrank; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +[TestClass] +public class AVeryBigSumTest +{ + public class AVeryBigSumTestCase + { + public List ar = []; + public long expected = 0; + } + + private static readonly AVeryBigSumTestCase[] tests = [ + new() + { + ar = [1000000001, 1000000002, 1000000003, 1000000004, 1000000005], + expected = 5000000015 + } + ]; + + [TestMethod] + public void testSimpleArraySum() + { + long result; + + foreach (AVeryBigSumTestCase test in tests) + { + result = AVeryBigSum.aVeryBigSum(test.ar); + Assert.AreEqual(test.expected, result); + } + } +} + diff --git a/algorithm-exercises-csharp/src/hackerrank/warmup/AVeryBigSum.cs b/algorithm-exercises-csharp/src/hackerrank/warmup/AVeryBigSum.cs new file mode 100644 index 0000000..d50c400 --- /dev/null +++ b/algorithm-exercises-csharp/src/hackerrank/warmup/AVeryBigSum.cs @@ -0,0 +1,23 @@ +// @link Problem definition [[docs/hackerrank/warmup/a_very_big_sum.md]] + +namespace algorithm_exercises_csharp.hackerrank; + +using System.Diagnostics.CodeAnalysis; + +public class AVeryBigSum +{ + [ExcludeFromCodeCoverage] + protected AVeryBigSum() { } + + public static long aVeryBigSum(List _ar) + { + var total = 0L; + + foreach (long x in _ar) + { + total += x; + } + + return total; + } +} diff --git a/docs/hackerrank/warmup/a_very_big_sum.md b/docs/hackerrank/warmup/a_very_big_sum.md new file mode 100644 index 0000000..7623241 --- /dev/null +++ b/docs/hackerrank/warmup/a_very_big_sum.md @@ -0,0 +1,55 @@ +# [A Very Big Sum](https://www.hackerrank.com/challenges/a-very-big-sum) + +Difficulty: #easy +Category: #warmup + +In this challenge, you are required to calculate and print the +sum of the elements in an array, keeping in mind that some of +those integers may be quite large. + +## Function Description + +Complete the aVeryBigSum function in the editor below. +It must return the sum of all array elements. + +aVeryBigSum has the following parameter(s): + +- int ar[n]: an array of integers. + +## Return + +- long: the sum of all array elements + +## Input Format + +The first line of the input consists of an integer n. +The next line contains space-separated integers contained in the array. + +## Output Format + +Return the integer sum of the elements in the array. + +## Constraints + +$ 1 <= n < 10 $ \ +$ 0 <= ar[i] <= 10^10 $ + +## Sample Input + +```text +5 +1000000001 1000000002 1000000003 1000000004 1000000005 +``` + +## Output + +```text +5000000015 +``` + +## Note + +The range of the 32-bit integer is +($ -2^31 $) to ($ 2^31 - 1 $) or $ [-2147483648, 2147483647] $ +When we add several integer values, the resulting sum might exceed the +above range. You might need to use long int C/C++/Java to store such sums.