随笔分类 - 数学——数论
摘要:题目链接:http://poj.org/problem?id=2891 解线性同余方程组,由于模数不是互质的,不能用中国剩余定理,但是可以通过扩展gcd的方法求解,时间复杂度大约是O(nlogn),当只有两个方程的时候可以容易求出解x,将x的通解凝聚成新的 模线性方程,接下来不断输入,进行n-1次迭
阅读全文
摘要:题目链接:http://poj.org/problem?id=1845 先分解质因数,然后求等比数列和,如果p-1和mod=9901不是互质的话由于9901是质数,所以p-1一定是mod的倍数,这个时候直接算出和即可,对于互质的,直接使用费马小定理 在O(logn)时间内求出逆元,与分子相乘即可,其
阅读全文
摘要:题目链接:http://poj.org/problem?id=3696 题目要求求最短的由连续的8构成的数使得这个数是L的倍数,我们首先求出phi(mod)可以证明a^x%mod=1的解x最大是phi(mod)而且其他解都是phi(mod)的约数,phi(mod)的约数大约是log(phi(mod)
阅读全文
摘要:题目链接:http://poj.org/problem?id=3090 从(0,0)向周围看去,能在(N,N)点以内看到的点的个数,假设x,y不是互质的,那么一定存在一个点(x/d,y/d)在(x,y)前面被看到,所以看到的点的x和y 一定是互质的,我们只需要扫描一遍n>=y>x.=2中的y就可以,
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/202/ 求解同时满足gcd(a0,x)=a1 和 lcm(b0,x)=b1的x的个数 解法是处理出b1所有的约数,逐一检查是否满足上述两个方程,由于采用试除法时间复杂度到了O(n*sqrt(b1)),大约是1e
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/201/ 求k对1-n所有数取模的和。 证明一段可以作为等差数列来求,证明如下:(转自ACwing) 代码如下: #include<iostream> using namespace std; typedef l
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/200/ 求解[1,N]之间的最大的反素数,有性质: 这个反素数是质因数个数最多的数中最小的一个。 证明:①假设有一个数质因数个数比它多,如果在他前面,不满足反素数的定义,如果在他后面,一定可以找到第一个质因数比
阅读全文
摘要:题目链接:https://www.acwing.com/problem/content/199/ 分解N!的质因数,因为N!的质因数不超过N,所以可以先预处理出[1,N]的质数,然后就是简单的求和计算了。 筛法采用的是优化之后的艾式筛法的优化了,算法的时间复杂度是O(n*loglogn),十分接近线
阅读全文
摘要:题目链接:http://poj.org/problem?id=2689 左右区间位于int大范围内但是区间长度只有1e6,所以可以考虑先筛出根号R内的质数之后用这些质数去筛(L,R)区间的质数,筛的时候注意至少要从2*p开始,因为p为质数 在(L,R)区间内第一个p的倍数和最后一个p的倍数分别是(L
阅读全文