数论
A_Pathfinder
这个作者很懒,什么都没留下…
展开
-
利用扩展欧几里得求一元同余方程和求逆元
先明白扩展欧几里得求不定方程:https://blog.csdn.net/A_Pathfinder/article/details/88131225再放个逆元整理的:https://blog.csdn.net/weixin_41162823/article/details/82824988?tdsourcetag=s_pctim_aiomsg同余的定义:给出一个正整数m和两个整数a,b,如...原创 2019-03-05 16:55:51 · 398 阅读 · 0 评论 -
费马小定理和欧拉定理
先拓展一下威尔逊定理:如果p是素数,则(p-1)! ≡ -1(mod p)。例:p=11,10!=1*(2*6)*(3*4)*(5*9)*(7*8)*10 ≡ 1*10 ≡ -1(mod 11);费马小定理:(定义)如果p是素数,a是正整数,且gcd(a,p)=1(互质),则a^(p-1) ≡ 1(mod p); 定理1:由此可以得出a^...原创 2019-03-06 08:57:21 · 902 阅读 · 0 评论 -
欧几里得算法 gcd
又叫辗转相除法,求最大公约数。时间复杂度在O(long max(a,b))内;核心代码:int gcd(int a,int b){ return b==0?a:gcd(b,a%b);}有些地方会卡时,所以另给出一种ll gcd(ll a,ll b){// return b==0?a:gcd(b,a%b); if(a==0) return 1; if(a<0)...原创 2019-03-04 12:54:00 · 395 阅读 · 0 评论 -
全排列 c++
全排列在STL中有next_permutation()函数,针对数组,如下#include<bits/stdc++.h>using namespace std;int main(){ int a[3]={1,2,3}; do{ for(int i=0;i<3;i++) printf("%d%c",a[i],i==2?'\n':' '); }while(n...原创 2019-03-09 15:38:48 · 680 阅读 · 0 评论 -
唯一分解定理
唯一分解定理又叫算术基本定理:任意一个合数(非素数),都能写成任意素数幂的乘积形式。定理应用:(来源,百度百科)模板代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=1e5;bool is[maxn];int cnt =0;ll spr[max...原创 2019-03-07 08:20:51 · 1259 阅读 · 0 评论 -
求解不定方程 (扩展欧几里得算法)
想看详细证明的:https://www.cnblogs.com/hadilo/p/5914302.html扩展欧几里得算法,简称 exgcd,一般用来求解不定方程,求解线性同余方程,求解模的逆元等,本篇只给出解不定方程ax+by=c;定理1: 如果a和b都是整数,则有整数x 和整数y 使得 ax+by=gcd(a,b);(Bezout定理)定理2:整数a,b互素当且仅当存在整数x,y使...原创 2019-03-04 19:15:33 · 2154 阅读 · 0 评论 -
求排列组合的两种方式 模板
(图片都来源百度百科)先说p(n,m),表示从n个不同元素中取出m个元素,并按次序排列的排列数,即字典序,组成的排列叫全排列。若从n个不同元素中取出m个元素,不考虑次序,则称从n中取出m个组合,其组合数表示为C(n,m)=n!/m!*(n-m)!;关于排列组合的性质用途太多了,下次再统一整理,这里只介绍求C(n,m)的两种方式第一种:连乘m个整数商:对于m个连续...原创 2019-03-21 20:01:10 · 550 阅读 · 0 评论 -
Prime Test Miller_Rabin+Pollard_rho
传送门这题卡的时间卡的真的厉害。不仅卡了Miller_Rabin算法,Pollard_rho算法,还卡了gcd 和 反复平方运算。题目大意:给你一个数,如果是素数,直接输出prime,否则输出他的第一个素因子。因为给的数特别大特别多,所以我们只能用Miller_Rabin算法进行大数判断,在判断不是素数后,还要用Pollard_rho算法进行分解。两个都是神仙算法。首先看第一个吧,...原创 2019-08-03 22:16:40 · 312 阅读 · 0 评论 -
2019牛客暑期多校训练营(第四场) D triples I
传送门题目简介:就是给你一个数,要你求出能够 或运算 出原数并且你的数能被3整除的最小个数。链接:https://ac.nowcoder.com/acm/contest/884/D来源:牛客网输入237输出1 32 3 6说明3=3, (3|6)=7这题就是一个小学的思路,我们都知道十进制中,任意一个数只要每一位相加的和能被3整除,那么这个...原创 2019-07-28 11:13:36 · 224 阅读 · 0 评论