[Haskell] CodeWars|Build a pile of Cubes

来源:互联网 发布:广州多迪网络要交钱吗 编辑:程序博客网 时间:2024/06/14 08:22

https://www.codewars.com/kata/5592e3bd57b64d00f3000047/haskell

题目

你的任务是构建一个建筑物,这个建筑物由n个立方体构成,最底层的立方体体积为n3,直到最高层的立方体体积为13

给定整个建筑物的总体积m,你知道这个建筑物有多少个立方体吗?

如果没有n能对应m,输出-1。

样例

findNb 1071225 = 45findNb 91716553919377 = -1

题解

因为

13+23++n3=(1+2++n)2=(n(n+1)2)2

所以。。

module Codewars.Kata.PileOfCubes wherefindNb :: Integer -> IntegerfindNb m    | div (root * (root + 1)) 2 ^ 2 == m = root    | otherwise = -1    where        intSqrt = floor . sqrt . fromIntegral        root = intSqrt (intSqrt m * 2)
原创粉丝点击