一、逆元理解 逆元是什么? 逆元就是扩大了概念的倒数。 定义:如果 ax≡1(mod M),就称x为在模M下 a的 逆元! 简单地说,如果一个数x满足 ax%M=1,那么x就称为在模M下 a的 逆元! 为什么说是扩大了概念的倒数呢,可见比起以前的倒数,只加了一个条件,即在后边加了一个 “%M",也可以这样理解,我们
873. 欧拉函数 https://www.acwing.com/video/298/ 欧拉函数定义有f(x)=n 表示1到x中与x互质的数有n个 #include <iostream> #include<algorithm> #include<cstdio> #include<vector> #include<queue> #include<stack> #include<cstring> using namespac
数论问题 这一次我们来讨论讨论计算几何问题 计算几何说难也难,说不难也不难,关键是模板,计算几何有许多的模板,而且许多的问题都要在纸上先写出自己的想法,推导完成后,再转换为代码,其中向量是最为重要的的一个概念。 话不多说先上题目,通过题目去体会计算几何的魅力; 题目: 链接: poj
质数 1、质数的判定: 试除法判定质数 试除法判定质数 //朴素写法,时间复杂度O(n) bool isprime(int n){ if(n<2) return false; for(int i = 2; i < n; ++ i) if(n % i == 0) return false; return true; } 我们发现对于任何一个能
数论问题 本次我们就先讲讲同余和欧几里得算法及其拓展 1、同余 同余的关键就在这个余字上面,如果m是整数,a,b是整数。 (a-b)/m为整数,则称a和b关于模m同余。记作a=b(modm),也就是a%m=b%m,这就叫同余。 讲同余我们必不可以忽略最大公约数和最小公倍数最大公约数记作gcd,最小公倍数记
先考虑怎么求lcm,考虑从序列后部插入一个数\(y\)的影响。 \(\frac{xy}{(x,y)}=x\frac{y}{(x,y)}\) \(x\)是容易计算的,边算边取模即可。 \(\frac{y}{(x,y)}\)这个东西很难计算,因为\(x\)很大。 但是\((x,y)=(x%y,y)\),所以可以从左到右计算之前所有数乘起来模\(y\)的值。 一次时间复杂
问题1:(互质) 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。 每种金币小凯都有无数个。 现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币? 输入格式 输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。 输出格式 输出文
#include<iostream> #include<cstdio> #include<cmath> using namespace std; int main() { int cirs_x[52],cirs_y[52],cirs_r[52]; int n,flag1,flag2,ans=0; int x1,x2,y1,y2; cin>>n; for(int i=0;i<n;i++) {
#include<iostream> #include<cstdio> using namespace std; int prime[10010]; int is_v[10010]={0}; int nums[10010]={0}; int t=0; void make() { for(int i=2;i<10010;i++) { if(!is_v[i]) { prime[t++]=i;
直接考虑\(x^A\equiv B\pmod{p^c}\),其中\(\gcd(B,p^c)\neq1,B\neq0\)的情况。 分解为\((p^t\cdot h)^A\equiv p^kb\pmod{p^c}\),那么必须有\(A|k\),否则无解。 要求\(tA=k\),那么方程变成\(h^A\equiv b\pmod{p^{c-k}}\)。解出来\(h\)之后他是模\(p^{c-k}\)意义下的,但是实际上\(h\)是
转: 数论之神 数论之神 求解方程(x^Aequiv B(bmod 2k+1))的解的个数 首先由于模数不是质数,所以我们先考虑拆分成质数的幂次形式,然后分别求解,可以发现根据CRT的性质,对于两两互质的模数,我们构成的剩余系和原来的数形成双射,所以所有解得个数等于每个方程解的个数的乘积。 问题转化为(x
超短文警告! 埃氏筛: #include <iostream> #include <cstring> #include <stdio.h> #define HRiver2 return #define Warma 0 #define ll long long #define maxn 114514 using namespace std; bool isprime[maxn]; ll prime[maxn]; int As(int n)//埃氏筛 { memset(
瓦罗兰大陆有n个英雄,他们编号从1到n,每个英雄的战斗力等于他的编号。 某一天这些英雄们准备建立k个联盟,编号为1到k,每个英雄只能加入一个联盟。 每个联盟的战斗力等于它里面的所有英雄的战斗力之和。 但是英雄们都很傲娇,他们想让自己的联盟的战斗力是一个质数,而且他们想让kk尽可能
一些定理 裴蜀定理 若关于 \(x,y\) 的不定方程 \(ax+by=c\) 有解(\(a,b,c \in \mathbf{Z}\)),则 \(c \bmod \gcd(a,b) =0\) 。 费马小定理 若 \(p\) 为质数,且 \(\gcd(a,p)=1\) ,则 \(a^{p-1} \equiv 1 \pmod{p}\) 。 欧拉定理 若 \(\gcd(a,m)=1\) ,则 \(a^{\varphi(m)} \equiv 1 \pmod
一.知识点 1.贝祖定理 验证 ax+by=gcd(a,b)是否有整数解; 2.扩展欧几里得定理 求解ax+by=gcd(a,b)*d; 在这里插入代码片 int exgcd(int a,int b,int&x,int&y){ if(b==0) { x=1; y=0; return a; } int d=exgcd(b,a%b,x,y); int t=x; x=y; y=t-(1/b)*y; return d; } 3.费马小定
扩展欧几里得 原理: http://blog.csdn.net/leader_one/article/details/75222771 中国剩余定理 前置技能: 拓展欧几里得 快速乘 原理: https://blog.csdn.net/destiny1507/article/details/81751168 素性检测 原理:https://blog.csdn.net/ltyqljhwcm/article/det
数学&数论 目录数学&数论模运算逆元快速幂素数唯一分解定理最大公约数(gcd)和最小公倍数(lcm)Exgcd(扩展欧几里得)exgcd求逆元 模运算 同余 若 x % b = 233, y % b = 233 记 \(x,y\) 在模 \(b\) 下是同余的 加法和乘法 \((x + y)~mod~b = x~mod~b + y~mod~b\) \((x*y)~mod~b = x~mod~b
首先是欧拉筛 我就不是做说明了 #include<iostream> using namespace std; const int N = 1e6 + 10; int prime[N],flag[N],cnt; void is_prime(){ for(int i = 2; i <= N - 1; i++){ if(!flag[i]){ flag[i] = 1; prime[++cnt] = i; } for(int j = 1; i *
数论 第一章:整除理论 (2)整除的基本知识 定义1: 设 a,b ∈ Z , a ≠ 0,如果存在 q ∈ Z , 使得 b=aq,那么就说 b 可被 a 整除,记作 b | a,且称 b 是 a 的倍数, a 是 b 的约数。 定理1
数论错题整理 1、最大的不能被表示成素数幂的数+最小公倍数求法 题目链接 对于2,不止有因子2还有其他素数因子,能达到的最大数为 3 ∗ 2 k
快速幂非递归版import java.util.Scanner;public class Main {public static void main(String[] args) {// TODO 自动生成的方法存根 Scanner sc=new Scanner(System.in);int t=sc.nextInt();for(int i=0;i<t;i++) {long b=sc.nextLong();long c=1000000007;long a=2;long res = 1
思路:数据范围1e6线性筛法筛出所有质数,遍历所有素数prm[i]判断n-prm[i]是否为素数,是则输出答案 代码: 思路:数据范围1e6线性筛法筛出所有质数,遍历所有素数prm[i]判断n-prm[i]是否为素数,是则输出答案 代码: int prm[maxn],cnt; bool vis[maxn]; void init(int n){ vis[0] = vis
持续更新 A - 乘法逆元 求 \(1∼n\) 中的所有数在模 \(p\) 意义下的乘法逆元 1.快速幂 根据欧拉定理,若\(a\)和\(p\)互质,则\(a^{\varphi(p)}\equiv1\;(mod\;p)\),当\(p\)是质数,则满足: \(p\) 为质数, \(a\) 为正整数, \(a\) 和 \(p\) 互质, 则\(a^{p-1} \equiv 1\;(mod\;p)\). 根据
RSA的数论基础及python实现 一、裴蜀定理 1.内容:若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。 2.重要推论:a,b互质的充分必要条件是存在整数x,y使ax+by=1 二、欧拉定理 若正整数a,m互质,则 a ^(φ(p)) = 1 (mod p )
两个整数a、b,若它们除以整数m所得的余数相等,则称a与b对于模m同余或a同余于b模m。 记作:a≡b (mod m), 读作:a同余于b模m,或读作a与b对模m同余,例如26≡2(mod 12)。 设m是大于1的正整数,a、b是整数,如果m|(a-b),则称a与b关于模m同余,记作a≡b(mod m),读作a与b对模m同余。 显然,有如下事实 (1)若