题目
传送门:灯泡开关
初始时有 n 个灯泡关闭。
第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。
第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。
找出 n 轮后有多少个亮着的灯泡。
大约 2 分钟
传送门:灯泡开关
初始时有 n 个灯泡关闭。
第 1 轮,你打开所有的灯泡。 第 2 轮,每两个灯泡你关闭一次。 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭)。
第 i 轮,每 i 个灯泡切换一次开关。 对于第 n 轮,你只切换最后一个灯泡的开关。
找出 n 轮后有多少个亮着的灯泡。
在机缘巧合下,了解到了这么一个神奇的 16 进制数字0x5f3759df
,顺便记录一下
科学改变世界,数学改变科学
上回遇到的不讲道理的数字是0.75
,它出现在 Java HashMap 的源码中,含义是默认的负载因子。简单介绍一下这个值的含义:在 HashMap 中达到容量的 0.75 倍时(即容量为 16 时元素为 12 时)会对 HashMap 进行扩容,扩容的意义在于减少 hash 冲突,避免 HashMap 退化为链表而大大增加查询时间。至于这个值为什么是 0.75,有个很简单的解释:提高空间利用率和减少查询成本的折中,主要是泊松分布,0.75 的话碰撞最小