随笔分类 -  数论

摘要:Lucas用于模数是质数的情况,如果模数不是质数,就要用到扩展卢卡斯 思想 把模数质因子分解 对于每一个pi^ki做一遍普通Lucas,最后中国剩余定理合并。 要理解的是过程 其实就是算fac的时间更优了(充分利用阶乘的性质就不用O(n)预处理) 结合代码会更好理解~ #include<bits/s 阅读全文
posted @ 2019-08-06 21:15 yyys 阅读(493) 评论(0) 推荐(0)
摘要:概念 定义域为正整数的函数是数论函数。 设p,q互质,f[p*q]=f[p]*f[q],称f为积性函数。如约数,欧拉,莫比乌斯。 任意p,q,f[p*q]=f[p]*f[q],称f为完全积性函数。如1函数,即f[i]=1。 我们一般用线性筛就可以预处理积性函数。 欧拉phi void phii() 阅读全文
posted @ 2019-08-01 21:04 yyys 阅读(884) 评论(0) 推荐(0)
摘要:求(n<=1e14) 如果直接枚举d再累加显然是不行的,考虑优化。 因为是下取整,那么⌊m/d⌋可能会等于⌊m/(d+1)⌋,那既然是一样的,为什么要一个个加而不是一块加呢? 有一个结论:⌊n/d⌋只有O(√n)个取值 阅读全文
posted @ 2019-07-31 12:31 yyys 阅读(216) 评论(0) 推荐(0)
摘要:题面 式子还是很好推的,显然应该设g[i]=i,和欧拉函数求和是一样的道理,想要把前面的i给抵消掉 注意!取模! 不然会爆long long 然后一开始的素数取到n^(2/3)是最好的 #include<bits/stdc++.h> #define mod 1000000007 #define LL 阅读全文
posted @ 2019-07-30 21:52 yyys 阅读(167) 评论(0) 推荐(0)
摘要:题目大意 给出一个n,求小于等于n中“约数个数”最多的数与个数(n<=1e18) 约数个数与一般不同,举例说明:12 的约数有1 2 3 4 6 12,这些数分别有1 2 2 3 4 6 个约数,那12 有18 个约数的约数。 因为n的范围很大,所以不可以使用朴素做法。 我们这样思考:既然是求约数个 阅读全文
posted @ 2019-07-29 20:50 yyys 阅读(185) 评论(0) 推荐(0)
摘要:传送门 这道题,其实思路很简单,但是。。坑是很多的 思路 我们发现L,R很大,但是区间只有1e6。 我们知道,R必定包含一个不超过根号R的质因子,所以只需要用筛法求出2~根号R的所有质数,对于每个质数p,把[L,R]中能被p整除的数标记,即标记i*p为合数,最终[L,R]中没被标记的就是质数,一个一 阅读全文
posted @ 2019-07-21 20:35 yyys 阅读(599) 评论(0) 推荐(0)
摘要:对于(a/b)%MOD这个式子,是不可以写成(a%MOD/b%MOD)%MOD,但是我们可以通过求b的逆元,转化成乘法运算 方程ax≡1(mod p),的解称为a关于模p的逆,当gcd(a,p)==1(即a,p互质)时,方程有唯一解,否则无解。 有如下几种求逆元的方式 1.递推求逆元 逆元有这样一个 阅读全文
posted @ 2019-03-09 16:49 yyys 阅读(428) 评论(0) 推荐(0)
摘要:C(n, m) % p = (C(n/p, m/p) % p) * (C(n%p, m%p) % p) % p 其实就是这个公式啦!用于组合数求模(通常用于阶乘无法解决的问题) 在此之前,要先了解逆元 inv[i]=-p/i*inv[p%i],inv[i]是在%p的条件下i的逆元 逆元的阶乘是这么求 阅读全文
posted @ 2019-03-08 21:35 yyys 阅读(240) 评论(0) 推荐(0)
摘要:我们当然都知道,快速幂是个好东西。然鹅快速幂也有bug——如果模数比较大,一乘就容易爆long long,那么就需要使用龟速乘了。 阅读全文
posted @ 2019-03-06 17:46 yyys 阅读(917) 评论(0) 推荐(0)
摘要:上一篇博客写的是中国剩余定理模数互质的情况,然鹅——还存在着模数不互质的情况,而原来的做法就没有办法用了 那我们现在该怎么做呢? 原来的思路是对于每一个方程,我们找出一个基础数,使得基础数满足该方程要求。因为是互质的关系,所以所有基础数加起来也不会冲突。(这个由最小公倍数保证) 还是这个栗子 存在一 阅读全文
posted @ 2019-03-04 22:04 yyys 阅读(2580) 评论(1) 推荐(0)
摘要:中国剩余定理是一个很神奇的定理hhh,用处是求这样的方程组 举个栗子~ 存在一个数x,除以3余2,除以5余三,除以7余二,然后求这个数 很显然,我们会这样思考:可以先找一个数,满足除以3余2(比如2),再去判断是否这个数是否满足第二个条件:除以5余3,如果不满足,再加上一个3,满足了第二个条件后,再 阅读全文
posted @ 2019-03-04 16:30 yyys 阅读(1078) 评论(0) 推荐(0)
摘要:以前模模糊糊地学了扩欧,总是感觉不系统,今天好好整理了一下,应该算是把扩欧给弄透。 首先要先明白gcd(最大公约数),很重要的是辗转相除法,即gcd(a,b)=gcd(b,a%b) 板子是这样 然后就是扩欧 根据裴蜀定理: ax + by = m 有解当且仅当m是gcd的倍数。裴蜀等式有解时必然有无 阅读全文
posted @ 2019-03-03 15:59 yyys 阅读(236) 评论(0) 推荐(0)
摘要:参考https://www.jianshu.com/p/8a27f0462d09 对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目(φ(1)=1) φ函数的值: φ(x)=x(1-1/p(1))(1-1/p(2))(1-1/p(3))(1-1/p(4))…..(1-1/p(n)) 其中p(1 阅读全文
posted @ 2019-03-02 15:35 yyys 阅读(1811) 评论(0) 推荐(0)