数论习题 2018.4
数学,数论
代码见这.
BZOJ.2440.完全平方数
题意即求第个无平方因子数。
  无平方因子数(Square-Free Number),即分解之后所有质因数的次数都为1的数
可以想到莫比乌斯函数,假设是答案,那么有
 
(从这里能看出
的上界,后面的
肯定是
的,所以
) 
二分一个
,求
中有多少个无平方因子数。 
既然带着个平方就都开方。根据容斥,对于
中的质数,答案为
 
即对于奇数个质数平方贡献为负,偶数个贡献为正;若存在某个质因子的次数
,那么对答案没有影响(如
在计算
时统计了个数)。这也符合莫比乌斯函数的特点。那么答案可以写为:
BZOJ.2820.YY的GCD
 
  求
 
 
 
  带着
不舒服啊,令
,则 
 
  前面那部分好求,后面那部分如果能用前缀和求的话就容易了。事实上也是可以的。 
  令
,那么
 
  对于每个
我们只需要暴力枚举约数
更新
就可以了。 
  复杂度(转自ppt by 
):由
 
  易知,每个质数更新时是均摊
的,而质数个数恰好为
,所以暴力枚举+维护前缀和的时间复杂度为
。 
  计算复杂度自然就是
了。 
   
  另外
好像是可以一起线性筛出来的。
参考。 
 
  对于这个式子,
- 时,有的因子的次数。 
 1.时,即。
 2.时,因为的次数,所以为。
 因此此时答案为。
- 时,有的质因子的次数为。 
 1.时,也是。
 2.时,此时与互质,由的积性函数性质,可化为,,所以为。
 因此此时答案为。
 注意对于每个质数,;。
 
BZOJ.3529.数表
 
  令表示的约数和,给定,多次询问,求
 
 
  是一个积性函数,根据约数和定理可以线性筛出来。(
具体见这,好像比较麻烦,所以直接
求)
  约数和定理:若,则
  先考虑去掉的限制,
 
 
 
  令
, 
 
  枚举
,把
放前边, 
 
  前半部分显然可以优化到
,对于后半部分和
之前一样,暴力枚举约数更新,然后求遍前缀和,复杂度
。 
  然后是
的限制,因为只有
的
才会对答案有贡献,所以我们将询问按
排序,
按
排序,每次询问将所有
的
插入,用树状数组维护前缀和。 
  (详细写一下,原先对于每个
,我们在预处理时要更新
的所有倍数的
,然后前缀和。现在根据
的大小依次更新
的倍数) 
  复杂度
。
  另外对于取模相当于和取"与(&)"。因此对于这题不需要取模,用int自然溢出然后最后答案对取与即可。(参考这。并不是很懂。。) 
  注意如果不是的话,得到的结果应是同余的(即可能是负的)。
小结 
套路1:由,去枚举,化简出。
套路2:对于,令,得到。
套路3:枚举,把放前边,后面留下个。
反正都是满满的套路
BZOJ.4816.数字表格
  这个好像简单些啊,只要不犯sb错误 
 
  用表示数列的第项,求
 
 
 
  直接去枚举
, 
 
  同之前,枚举约数暴力更新
,复杂度
。(
) 
  注意次幂不能直接取模,利用费马小定理可以对
取模。 
  然后注意
。。
小结: 
套路1:把换到幂上去,这样就有了。
套路2:令,在最外层枚举。
另外常见的就不再写了。
. 
. 
. 
. 
. 
.