- 博客(3)
- 收藏
- 关注
原创 java,快速幂算法
解析:蓝色部分:每次循环都是对n/2并向下取整,这相当于将105的二进制不断的右移。黄色部分:if n mod 2 ==1{:表示对n不断右移中,二进制末尾是1。红色部分:a的初始化a = 7 ,通过a = a*a的不断循环得到7的幂次。注:在java中(int)类型的整数相除,相当于相除之后,再将商向下取整。,就是将105转为二进制,再去找其中为的1的位置,其余补0的数。所以对n/2,并向下取整,直接写成: n = n/2;,我们要找的 1 8 32 64,就在上面的数中。//将我们要找的数累乘。
2025-02-22 14:33:50
342
原创 15届蓝桥杯javac组,拼正方形,求最大的边长
因为2*2正方形给的数量远远大于1*1正方形的数量,所以我们要尽可能的使用2*2的正方形,剩下的面积由1*1的正方形补,设拼成的最大正方形边长为n,面积为n的平方。1*1的正方形的数量remianingArea:n的平方-4Math.min(7385137888721,n的平方/4)如果拼成的最大正方形全是由2*2的正方形拼成的,2*2的数量为n的平方/4。所以使用1*1正方形的面积为n的平方-4x,数量也为n的平方-4x。设使用了x个2*2的正方形,2*2面积为4x。使用二分查找来查找最大正方形的边长。
2025-02-21 15:24:24
564
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人