CodeWars 6kyu. Build a pile of Cubes
Find the largest number of cubes can be piled.
Your task is to construct a building which will be a pile of n cubes. The cube at the bottom will have a volume of n^3, the cube above will have volume of (n-1)^3 and so on until the top which will have a volume of 1^3.
You are given the total volume m of the building. Being given m can you find the number n of cubes you will have to build?
The parameter of the function findNb (find_nb, find-nb, findNb) will be an integer m and you have to return the integer n such as n^3 + (n-1)^3 + … + 1^3 = m if such a n exists or -1 if there is no such n.
Examples:
findNb(1071225) –> 45
findNb(91716553919377) –> -1
mov rdi, 1071225
call find_nb ; rax <– 45mov rdi, 91716553919377
call find_nb ; rax <– -1
접근법
Σ k3 (k = 1~n) == ((n * (n+1))/2))**2 가 m보다 작아야 한다.
따라서 n == Math.sqrt(2 * Math.sqrt(m)) 에 근사한 값으로 설정한 후 m보다 커질 때까지 반복한다.
JavaScript Solution
1 | function findNb(m) { |