We have a function that takes in an integer n, and returns a number x.
Lets call this function findX(n)/find_x(n) (depending on your language):
function findX(n) {
let x = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < 2*n; j++)
x += i + j;
}
return x;
}
The functions loops throught the number n and at every iteration, performs a nested loop on 2*n, at each iteration of this nested loop it increments x with the (nested loop index + parents loop index).
This works well when the numbers are reasonably small.
findX(2) //=> 16
findX(3) //=> 63
findX(5) //=> 325
But may be slow for numbers > 103
So your task is to optimize the function findX/find_x, so it works well for large numbers.
Input Range
1 <= n <= 106 (105 in JS)
Note: This problem is more about logical reasoning than it is about finding a mathematicial formula, infact there are no complex math formula involved
'매일매일개발 > Codewars' 카테고리의 다른 글
codewars #93 Number Format (6kyu) (0) | 2018.08.08 |
---|---|
codewars #92 Bit calculator (5kyu) (0) | 2018.08.07 |
codewars #90 Cure Cancer (6kyu) (0) | 2018.08.01 |
codewars #89 Mexican Wave (6kyu) (0) | 2018.07.31 |
codewars #88 Which are in? (6kyu) (0) | 2018.07.30 |