京东疯狂序列 为什么要四舍五入

大家都用ceil(根号(0.25+2*n)-0.5来做,我的想法是用round(sqrt(2*n))来做
没四舍五入的直接用返回sqrt(2*n)只能通过80%

所以返回sqrt(n) 是直接截掉小数部分的,要处理第二种情况,要四舍五入
实现方法为 round(sqrt(n)) 或者 int (sqrt(n)+0.5) ,这两种都能得到m,而不是有时候得到m-1

Ps: double 到int会直接截去小数部分
此题的n最大为10^18, sqrt有几个重载函数 ,有的可以存这么大的数,long long 也是64位
long long 的最大值也可以参考此网站
疯狂序列题回忆:1 2 2 3 3 3 4 4 4 4 . . . . .这样的序列,求第n个数对应序列中的那个数?n的范围为 [1, 1018]

#京东##C++工程师#
全部评论
这道题一行代码就能过啊,直接解方程就可以了
点赞 回复 分享
发布于 2017-09-09 01:26
这题10的18次方不是64位表示不了吗
点赞 回复 分享
发布于 2017-09-09 00:11
你sqrt直接转换为浮点不就是小数了?
点赞 回复 分享
发布于 2017-09-09 00:06
向上取整。
点赞 回复 分享
发布于 2017-09-09 00:05

相关推荐

熬夜冠军🏆:和你情况差不多,你这个HR算敞亮了,直白告诉你了,不浪费你时间,我的那个还跟我说没法说,只能等。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务