沙拉公主的困惑

本来一开始觉得用欧拉函数不可取的,因为\(M!\)太大了

所以我想到了质因数分解,只要找的数不含\(M!\)的质因子即可

理想是美好的,但是现实是我没有办法确定每一个非\(M!\)质因子的质因子的个数,因为我最后要保证所有质因子的乘积不会超过\(N!\)

所以我们只能再回到欧拉函数

我们稍微的套用一下欧拉函数的公式,就会发现(不考虑溢出)阶乘的欧拉函数还是很好求的

说明这条路可能走得通,试一下

第二种情况怎么分析?从我们学过的公式来说,欧几里得公式似乎挺好用的,所以我们就考虑\(gcd(k,M!)=1\)\(k\)的个数(其中\(k<M!\)

那这不就是\(φ(M!)\)吗?我们只需要还原回去就行了

具体来说,设\(k+t*M!≤N!\)\(k+(t+1)*M!>N!\),解出\(t\)就好了,注意解不等式的时候有\(k<M!\)\(M!|N!\)

这里说一下,假定了一个\(k\)之后,每一步是增加\(M!\)而不是\(k\),脑子别发癫了

update 2024.8.1

第三遍做这道题目,总算做出来啦

关键就是利用欧几里得公式啦

posted @ 2024-02-15 22:16  最爱丁珰  阅读(13)  评论(0)    收藏  举报