[Haskell] CodeWars|Build a pile of Cubes

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

题目

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

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

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

样例

findNb 1071225 = 45
findNb 91716553919377 = -1

题解

因为

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

所以。。

module Codewars.Kata.PileOfCubes where

findNb :: Integer -> Integer

findNb m
    | div (root * (root + 1)) 2 ^ 2 == m = root
    | otherwise = -1
    where
        intSqrt = floor . sqrt . fromIntegral
        root = intSqrt (intSqrt m * 2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值