
数论
文章平均质量分 52
这里是数论专题
*DDL_GzmBlog
再见锋芒,准备启程
展开
-
[算法总结] 约数 !
约数871. 约数之和(O√n +M log M)细节:Code: 871. 约数之和(O√n +M log M) 细节: 因为ai的范围是 2e9+10 所以 如果使用 On的暴力枚举是必然超过的 借用@Bug-Free一张图 ///若d > √n 是 N的约数 ///则 N/d <= √n 也是N 的约数 ///换言之 约数总是成对出现的(除了完全平方数) 因此因为这个关系 所以y总的代码就把时间复杂度改成O√n +M log M (M表示的是 约数的个数) Code: #include原创 2021-05-27 10:44:58 · 516 阅读 · 0 评论 -
[Acwing] 逆 元 ! !
目录前言逆元推导过程对应例题code应用 前言 为什么 我开始学这个呢 https://ac.nowcoder.com/acm/contest/11212/C (因为昨天这题不会优化 还被大佬嘲讽了 哭唧唧 题目来自牛客小白院赛35) (开始和数论队友抢饭碗) 逆元 如果 b 和 m 互质 并且 b|a (b!=a) 使得 a/b == a*x (mod m) 则 称 x 为 b的模m 乘法逆元 记作 b^(-1)(mod m) (卧槽 好绕) 推导过程 质数 —> 费马定理 如果b和p 是互质的原创 2021-06-19 16:57:46 · 228 阅读 · 0 评论 -
[算法总结] 基础课---有关素数
素数试除法判定素数细节:code: 试除法判定素数 细节: 如果是i*i 可能会爆,如果是sqrt又会因为反复调用函数而爆时 code: #include <iostream> #include <algorithm> using namespace std; bool is_prime(int x) { if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x原创 2021-05-23 16:54:30 · 305 阅读 · 0 评论 -
[Acwing] 883. 高斯消元解线性方程组 高斯消元
前言 传送门 : 原题推荐明路 : 思路 我们将原有方程换成增广矩阵 然后使用行变换 对方程进行修改 (这里代码枚举每行然后对每行的每列进行操作) 最后如果 如果左边的系数为0的话,那么说明存在无穷解 否则因为行数少于方程数那么就不存在解 啊,总之原理都懂,毕竟学过线性代数,但是操起来就不懂了 Mycode typedef priority_queue<int,vector<int>,greater<int>> Pri_m; typedef pair<int,i原创 2022-03-15 20:37:26 · 321 阅读 · 0 评论 -
[算法总结] 数论---组合数多模板的使用和范围分析
组合数,要点写前头 本文一切的范围a,b都表示 C[b,a] 本篇所有代码来自A 1.使用dp预处理C 1≤n≤10000 输入的组数 1≤b≤a≤2000 #include <iostream> #include <algorithm> using namespace std; const int N = 2010, mod = 1e9 + 7; int c[N][N]; void init() { for (int i = 0; i < N; i ++ )原创 2021-04-18 12:36:49 · 175 阅读 · 0 评论 -
[Acwing] 1303. 斐波那契前 n 项和 矩阵快速幂
前言 在计算斐波那契数列的时候,F[n]=F[n−1]+F[n−2]F[n] = F[n-1]+F[n-2]F[n]=F[n−1]+F[n−2],因此F[n]F[n]F[n]直接相关于F[n−1],F[n−2]F[n-1],F[n-2]F[n−1],F[n−2] , 因此我们只需要记录最近的两个斐波那契数列即可 因此我们定义f(n)=[Fn,Fn−1]f(n)=[F_{n},F_{n-1}]f(n)=[Fn,Fn−1] (一个一行两列的矩阵 因此有f(n+1)=[Fn+1,Fn+2]f(n+1) = [原创 2022-03-25 22:07:09 · 1458 阅读 · 0 评论 -
[算法总结] 快速幂
目录前言算法描述CODE: 前言 因为 刚刚在学 逆元 才发现 我对这个 反复平方法这么陌生 所以再重温一遍 算法描述 计算 a^n mod p a^n = a* a* a*…*a (这种方法 在 a 和 n 太大的时候 就不能用了) 但是我们知道 因此我们可以通过 二进制取幂 因为对于一个数 n 有 log⌊n⌋+1 个 二进制数 所以 a^n 可以拆为 所以我们只需要计算 O( log n ) 次就可以计算出 a^n CODE: “>>=1” 表示除2 “b&1”原创 2021-06-19 17:56:51 · 205 阅读 · 0 评论