## The challenge

Your task is to make function, which returns the sum of a sequence of integers.

The sequence is defined by 3 non-negative values: beginendstep (inclusive).

If begin value is greater than the end, function should returns ****

Examples

 ``````1 2 3 4 `````` ``````2,2,2 --> 2 2,6,2 --> 12 (2 + 4 + 6) 1,5,1 --> 15 (1 + 2 + 3 + 4 + 5) 1,5,3 --> 5 (1 + 4) ``````

## The solution in C

Option 1:

 ``````1 2 3 4 5 6 `````` ``````unsigned sequence_sum(int start, int end, int step) { int sum=0,i; for(i=start;i<=end;i=i+step) sum=sum+i; return sum; } ``````

Option 2:

 ``````1 2 3 4 5 6 7 `````` ``````unsigned sequence_sum(unsigned start, unsigned end, unsigned step) { if(start > end) return 0; else { unsigned n = (end - start)/step; return ((n + 1)*start + n*(n + 1)*step/2); } } ``````

Option 3:

 ``````1 2 3 4 5 `````` ``````unsigned sequence_sum(unsigned start, unsigned end, unsigned step){ if(start > end) return 0; int n = (end-start)/step + 1; return (n)*(2*start+(n-1)*step)/2; } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````#include unsigned sequence_sum(unsigned start, unsigned end, unsigned step); Test(Sample_Test, should_return_the_sum_of_sequence) { cr_assert_eq(sequence_sum(2u, 6u, 2u), 12u); cr_assert_eq(sequence_sum(1u, 5u, 1u), 15u); cr_assert_eq(sequence_sum(1u, 5u, 3u), 5u); cr_assert_eq(sequence_sum(0u, 15u, 3u), 45u); cr_assert_eq(sequence_sum(16u, 15u, 3u), 0u); } ``````