首页 > 编程语言 >算法复习

算法复习

时间:2024-02-21 22:35:56浏览次数:31  
标签:复习 pmod ll varphi 算法 exgcd 欧拉 equiv

省选前最后一周了,对照大纲过一遍,每个算法稍微写一点自己的理解与板子记忆技巧。

感觉很多东西还是之前听别人讲的时候学的似懂非懂......导致现在看起来好像啥都会一点实际上好像啥也不会,每次越临近考试就会感觉整个人很虚无啊......反正不是很好受。

数论

  • exgcd【7】

用于解决形如 \(ax+by=c\) 的整数域不定方程,有解的条件是 \(\gcd(a,b)|c\)(裴蜀定理 【7】)。

具体地,对于方程 \(ax+by=c\),辗转相除构造 \(a=b',b=a \bmod b\) 的解 \((x',y')\),那么 \(x=y'\),\(y=x'-\lfloor\frac{a}{b}\rfloor y'\),边界条件 \(b=0\) 时 \(x=1,y=0\),容易验证其正确性。

得到是一组特解,如果需要求最小最大解 / 正整数解之类的其他要求,直接调整即可。所有解和特解的关系形如 \(x=x_0+kb,y=y_0-ka\)。

void exgcd(ll a,ll b,ll&x,ll&y){
	if(!b)return x=1,y=0,void();
	exgcd(b,a%b,y,x);
	y-=a/b*x;
}
  • 费马小定理 【7】

\(a^{p-1}\equiv 1\pmod p\),\(p\) 是质数,常用于求模质数意义下的逆元。

  • 威尔逊定理 【7】

\((p-1)!\equiv -1\pmod p\),证明考虑两两分组乘起来。

  • 欧拉定理和欧拉函数 【7】

欧拉函数 \(\varphi(n)\) 表示 \([1,n]\) 中与 \(n\) 互质的正整数个数,是积性函数,可以线性筛求。

常用结论:\(\sum\limits_{d|n}\varphi(d)=n\),证明考虑组合意义。

(扩展)欧拉定理:当 \(b\ge \varphi(p)\) 时 \(a^b\equiv a^{b\bmod \varphi(p)+\varphi(p)}\pmod p\)(欧拉降幂法)

  • exCRT 【7?】

exCRT 可以完全替代 CRT。

要求形如 \(x\equiv a_i \pmod {p_i}\) 的方程组。

考虑依次合并各个方程组,那么现在问题变为,已知前 \(i-1\) 个方程组的某个解为 \(x\),前 \(i-1\) 个 \(p\) 的 LCM 为 \(M\),那么调整这个 \(x\),加上 \(M\) 的倍数使得 \(x\) 满足第 \(i\) 个方程组。用形式化的语言描述就是 \(x+Mt\equiv a_i\pmod{p_i}\),移项得到 \(Mt\equiv a_i-x\pmod{p_i}\),可以表示为 \(Mt+p_is=a_i-x\) 的二元一次不定方程的形式,用 exgcd 解决。

  • 原根和指数 【8】

标签:复习,pmod,ll,varphi,算法,exgcd,欧拉,equiv
From: https://www.cnblogs.com/petitsouris/p/18026337

相关文章

  • m基于码率兼容打孔LDPC码nms最小和译码算法的LDPC编译码matlab误码率仿真
    1.算法仿真效果matlab2022a仿真结果如下: 2.算法涉及理论知识概要       码率兼容打孔LDPC码BP译码算法是一种改进的LDPC译码算法,能够在不同码率下实现更好的译码性能。该算法通过在LDPC码中引入打孔操作,使得码率可以灵活地调整,同时利用BP(BeliefPropagation)译码算法......
  • day38 动态规划part1 代码随想录算法训练营 746. 使用最小花费爬楼梯
    题目:746.使用最小花费爬楼梯我的感悟:哈哈,我居然自己独立写出来了,确实,只要定义定清楚了,哪怕定的含义只有自己能看懂,只要定义一致就可以求出解决来!!!我真是个大天才!!理解难点:听课笔记:代码示例:classSolution:defminCostClimbingStairs(self,cost:List[int])->int:......
  • # 代码随想录算法训练营day01 | leetcode 704. 二分查找、35.搜索插入位置、34.在排序
    题目链接:704.二分查找-简单题目描述:给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,0,3,5,9,12],target=9输出:4解释:9出现在nums中并且下标为4示......
  • KMP 算法和 TIRE 树
    1.KMP算法KMP算法,是判断一个字符串是否在一个字符串中出现过,能够快速匹配字符串在文本串中的有无,位置,次数,我们在匹配字符串中可以找到失配点,就可以不用从\(1\)重新查找,从某个特定点进行查找,大大减小了时间复杂度。考虑一组样例:字符串:abcdf文本串:abcdabcdef我们来将他匹......
  • 2024牛客寒假算法基础集训营5
    A.总数-1的个数#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;#defineinf0x3f3f3f3fvoidsolve(){intn;cin>>n;intans=0;for(inti=1,x;i<=n;i++){cin>>x;if(x==1)c......
  • 2024牛客寒假算法基础集训营5
    2024牛客寒假算法基础集训营5比赛链接赛时出了五题,被自己不严谨的思维害惨了,之后的题晚几天再补,要开学了A.mutsumi的质数合数思路既不是质数也不是合数恐怕非1莫属了吧Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()......
  • Java复习
    目录Java面向对象程序设计(madebyzhoujin)第一章Java开发入门Java语言的优点什么是JDK?:SUN公司提供的一套Java开发环境,是整个java的核心,包括Java编译器、Java运行工具、Java文档生成工具、Java打包工具等JDK安装目录介绍用命令窗口开发java程序两个系统环境变量:path和classpath......
  • day38 动态规划part1 代码随想录算法训练营 70. 爬楼梯
    题目:70.爬楼梯我的感悟:居然自己先写出来了!!继续努力!!理解难点:听课笔记:我的代码:classSolution:defclimbStairs(self,n:int)->int:ifn==1:return1dp=[0]*(n+1)dp[1]=1dp[2]=2foriinran......
  • 1 c++算法题解析-两个数之和
    //给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。//你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。//你可以按任意顺序返回答案。//示例1:////输入:nums=[2,7,......
  • 代码随想录算法训练营第二十四天 | 77. 组合
    组合已解答中等相关标签相关企业给定两个整数n和k,返回范围[1,n]中所有可能的k个数的组合。你可以按任何顺序返回答案。示例1:输入:n=4,k=2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例2:输入:n=1,k=1输出:[[1]]提示:1<=n<=201<......