![]() |
VOOZH | about |
Given n, no of elements in the series, find the summation of the series 1, 3, 6, 10....n. The series mainly represents triangular numbers.
Examples:
Input: 2 Output: 4 Explanation: 1 + 3 = 4 Input: 4 Output: 20 Explanation: 1 + 3 + 6 + 10 = 20
A simple solution is to one by one add triangular numbers.
Output:
20
Time complexity : O(n)
Auxiliary Space: O(1) since using constant variables
An efficient solution is to use direct formula n(n+1)(n+2)/6
Let g(i) be i-th triangular number. g(1) = 1 g(2) = 3 g(3) = 6 g(n) = n(n+1)/2
Let f(n) be the sum of the triangular numbers 1 through n. f(n) = g(1) + g(2) + ... + g(n) Then: f(n) = n(n+1)(n+2)/6
How can we prove this? We can prove it by induction. That is, prove two things :
This allows us to conclude that it's true for all n >= 1.
Now 1) is easy. We know that f(1) = g(1) = 1. So it's true for n = 1. Now for 2). Suppose it's true for n. Consider f(n+1). We have: f(n+1) = g(1) + g(2) + ... + g(n) + g(n+1) = f(n) + g(n+1) Using our assumption f(n) = n(n+1)(n+2)/6 and g(n+1) = (n+1)(n+2)/2, we have: f(n+1) = n(n+1)(n+2)/6 + (n+1)(n+2)/2 = n(n+1)(n+2)/6 + 3(n+1)(n+2)/6 = (n+1)(n+2)(n+3)/6 Therefore, f(n) = n(n+1)(n+2)/6
Below is the implementation of the above approach:
Output:
20
Time complexity : O(1)
Auxiliary Space: O(1), since no extra space has been taken.