关注
private long temp(long n){
//平方根
long len = (long)Math.sqrt(n);
//先使用n视图拼出正方形
/**
* (len-1)个 2火柴,一个4火柴,这是一列,共有len个这样的列
*/
long res = len*(4+(len-1)*2);
//还需要多少个
long other = n-len*len;
if(other==0)return res;
if(other<=len){
//只够补一行/列
res+=3+(other-1)*2;
}else {
res+=3+(len-1)*2;//补一行
other-=len;
res+=3+(other-1)*2;//补一列
}
return res;
}
我解释一下帖主第三题的几行代码:long len = (long)Math.sqrt(n);先视图用用n个小正方行拼出最大程度的大正方形,所以开方。long res = len*(4+(len-1)*2); 在纸上画一下,len-1个“直角火柴”(2),一矩形火柴(4),组成一列,共有len个这样的列,而且(4)重合的部分会补上最后的边。long other = n-len*len; 统计还剩下几个(最多能够拼出一个完整的行或者列)。res+=3+(other-1)*2;剩下的小方块数量够填充多长的列/行。
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
10-24 14:28
东北大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 毕业季,给职场新人一些建议 #
159861次浏览 2342人参与
# 你被哪些公司挂了? #
105312次浏览 646人参与
# 华勤技术工作体验 #
11969次浏览 22人参与
# 运营人的第一份offer应该如何选 #
199325次浏览 1227人参与
# 牛友们的论文几号送审 #
60940次浏览 830人参与
# 你们公司哪个部门最累? #
35221次浏览 245人参与
# 职场上哪些事情令人讨厌 #
30401次浏览 120人参与
# 机械/制造每日一题 #
77956次浏览 1391人参与
# 毕业季,你想好怎么跟生活对线了吗? #
259630次浏览 3846人参与
# 如何提高实习转正率? #
60770次浏览 422人参与
# 硬件人秋招进展 #
254054次浏览 3944人参与
# 国企秋招,你投了吗? #
50489次浏览 345人参与
# 机械人晒出你的简历 #
142092次浏览 865人参与
# 入职以后才知道的校招谎言 #
107870次浏览 670人参与
# 风评不好的公司,你会去吗? #
131073次浏览 673人参与
# 你想跟着什么样领导? #
21276次浏览 175人参与
# 你的秋招白月光和意难平公司 #
30008次浏览 234人参与
# 听到哪句话代表面试稳了OR挂了? #
108601次浏览 482人参与
# 分享一个让你热爱工作的瞬间 #
51345次浏览 442人参与
# 实习吐槽大会 #
394170次浏览 2163人参与
上海得物信息集团有限公司公司福利 1231人发布