题目
一个房间里有 n n n盏灯泡,一开始都是熄着的,有 1 1 1到 n n n个时刻,每个时刻 i i i,我们会将 i i i的倍数的灯泡改变状态(即原本开着的现将它熄灭,原本熄灭的现将它点亮),问最后有多少盏灯泡是亮着的。
分析
显然可知,这道题目求有多少个数的约数有奇数个,所以题目等价于求 ⌊ n ⌋ \lfloor\sqrt n\rfloor ⌊n⌋
在洛谷的是弱化版,但是在我们学校题库是高精度开方,一般用二分答案求解,但是在学校题库一堆巨佬暴力答案过了
巨佬的暴力时间复杂度最慢为 O ( 10 l e n 3 ) O(10len^3) O(10len3),但是我的虽然好不到哪里去但是时间复杂度高达 O ( l e n 2 l o g 2 1 0 l e n ) ≈ O ( 3 l e n 3 ) O(len^2log_210^{len})\approx O(3len^3) O(len2log210len)≈O(3len3)。
当然巨佬们如果用 N T T NTT NTT的时间复杂度 O ( 3 l e n 2 l o g 2 l e n ) O(3len^2log_2len) O(3len2log