这两天数论的学习还真的是挺艰难,感觉每道题都不太会的样子。。。。。。
-------------------------------------------------------------------------------------------------------------------------------------
这两天的核心知识点主要有:欧拉函数 扩展欧几里得 素数筛 模线性方程组 逆元(重点) 中国剩余定理 Laucs定理
Baby step Giant step原理(我不太会) 莫比乌斯反演(懵逼乌斯) 容斥原理 杜教筛(不太会) 狄利克雷卷积与积性函数(不太会) 。。。。。。
下面以一些代表性题目复习
-------------------------------------------------------------------------------------------------------------------------------------
B - Divisors (POJ 2992)
直接暴力搞然后再分解因数肯定是不行的,这里需要用到一个公式
求n!的每个质因子个数:ei=[N/pi^1]+ [N/pi^2]+ …… + [N/pi^n] 其中[]为取整
这样的话再用算数基本定理就能算出因子个数了
C - Longge's problem(poj2480)
思路
i = a * b
n = a * d
且 gcd(b, d) = 1
gcd(i, n) = a ==> gcd(1,n/i)=1 ==> 用欧拉函数
E - Happy 2006(poj2773)
欧几里得:gcd(b×t+a,b)=gcd(a,b)
可以发现与m互素的数对m取模具有周期性
F - GCD (hdu1695)
很经典的一道题,可以通过两种方法求解
(一)容斥原理
将区间分成两段,1~b之内直接用欧拉函数求,而b~d内则用容斥。
设i在 [b+1,d ]内,则每个i,最多有b,再减去容斥的个数,求和即为答案,这里的容斥可以用dfs来做
(二)莫比乌斯反演
zlc第二天上课讲的例题,具体推公式我是推不来的,给个链接:https://blog.csdn.net/whai362/article/details/44065139
这个方法快很多。。。
H - X-factor Chains(poj3421)
其实这道题是一道排列组合题
最大链长=所有质因子个数和
总的因子个数c,不同的因子为f1,f2,...,fn其次方数分别为e1,e2,...,en。那么,不同序列的个数为c!/(e1!e2!......en!)。
L - Last Digits (poj2720)
欧拉降幂公式的使用,这道题细节太多了,具体参考:https://blog.csdn.net/yuege38/article/details/78989456
M - C Looooops(poj2115)
求解一个模线性方程组,使用扩展欧几里得求解,也可以直接套模板(滑稽)。不过要注意求出来的数有可能是负数,要将他调整到题目要求的区间。
O -Visible Trees (hdu2841)
由于之前做过一道类似的题,就一直往欧拉函数去想。结果这道题是一道水题qaq。
后面不被被前面挡住就是他的坐标(x,y),gcd(x,y)=1。
转化成F题,套F题莫比乌斯的板子即可。