数学知识总结(一)

提高组数学学习笔记

初等数论

同余式

  • 基本概念
    ab 在模 n 的意义下同余,记作 ab(modn)

    也可简记为 ab(n)

  • 同余类、剩余系

    • 同余类:n 同余的所有整数组成的集合称为同余类,共有 n 个同余类。

    • 剩余系: 对于某一个特定的正整数 n ,一个整数集中的数模 n 所得的余数域。

    • 完全剩余系:mZ+ ,若 r0,r1rm1m 个整数,并且两两模 m 不同余,则 r0,r1,rm1叫作模 m 的一个完全剩余系。

    • 简化剩余系: 也称既约剩余系或缩系,是 m 的完系中与 m 互质的数构成的子集。

欧拉定理和欧拉函数

欧拉函数

  • 概念
    φ(n) 表示 n 以内与 n 互质的数的个数。
  • 公式φ(N)=N×Prime p|N(11p)
  • 求法
    • 单个套公式
    • 多个线性筛
int phi[N], primes[N], v[N];
phi[1] = 1;
for (int i = 2; i <= n; i++)
{
    if (!v[i]) v[i] = i, primes[++cnt] = i, phi[i] = i - 1;
    for (int j = 1; j <= cnt; j++)
    {
        if (v[i] > primes[j]) break;
        v[primes[j] * i] = primes[j];
        phi[i * primes[j]] = (i % primes[j]) ? (primes[j] - 1) * phi[i] : primes[j] * phi[i];
    }
}

欧拉定理

a,n 互质时,aφ(n)1(modn)

  • 证明
    a1,a2,a3aφ(n) 构成 mod n 意义下的简化剩余系。

    i,j[1,φ(n)],ai×aaj×a

    所以 i[1,φ(n)],ai×a 也构成 mod n 意义下的简化剩余系。

    aφ(n)×a1×a2aφ(n)(a×a1)×(a×a2)(a×aφ(n))(modn)

    将式子两边的 mod n 的简化剩余系消去,就可以得到:

    aφ(n)1(modn)

  • 推论

    • a,n 互质时,ababmodφ(n)(modn)
      a,n 不互质且 b>=φ(n) 时:ababmodφ(n)+φ(n)(modn)
    • 使得 ax1(modn) 的最小正整数解 x 必定满足 x|φ(n)

费马小定理

一般形式:apa(modp),当 p 为素数时成立。

常见形式:ap11(modp),当 p 为素数且 ap 互质时成立。

费马小定理是 n 为素数的必要非充分条件。

证明

ap: 由欧拉定理 φ(p)=p1app(modp) 成立。

ap: ap0a(modp)

威尔逊定理

  • 证明:逆元配对。
  • 应用

例题:
给出素数 p,求 q!modp,其中 q 为比 p 小的最大素数,p[1,109]

裴蜀定理

一定 x,yZ  s.t. a×x+b×y=gcd(a,b) 成立。

  • 证明

    • 数学归纳法
    • 完全剩余系
  • 推论

    • a,b 互质的充分必要条件是存在整数 x,y 使 a×x+b×y=1
    • a1,a2,a3......ann 个整数,d 是它们的最大公约数,那么存在整数x1......xn 使得 x1a1+x2a2+...xnan=d
    • a×x+b×y=c 有解当且仅当 c | gcd(a,b)

例题
给定 KM 求一个最小的正整数 x,使得 Kx1(modM),如果无解输出 1。(阶?)

数据范围:2KM2×109

逆元

  • 概念
逆元素是指一个可以取消另一给定元素运算的元素
                                    ---百度百科

很好理解,比如,一个数和它的相反数互为加法逆元

a 的乘法逆元为满足 a×b(modn)b

记为 a1

  • 应用: 除法取模

  • 求法:

    • 扩欧算法
      b×a+y×n=1

    • 费马小定理(注意:仅在 p 为质数时成立)
      a×ap21(modn)

    • 线性递推:

      inv[1] = fac[1] = inv[0] = fac[0] = 1;
      for (int i = 2; i <= n; i++)
          inv[i] = (p - p / i) * inv[p % i] % p;
      

扩展欧几里得算法

求解 a×x+b×y=gcd(a,b) 的一组特解 (x0,y0)

  • 通解

对于形如 a×x+b×y=c,gcd(a,b) | c 的方程来说:

它的特解为 (x=x0×cgcd(a,b),y=y0×cgcd(a,b))

它的通解为 (x+k×bgcd(a,b),yk×agcd(a,b))

void exgcd(int a, int b, int &x, int &y) 
{
   if (b == 0)
       return void(x = 1), void(y = 0);
   exgcd(b, a % b, x, y);
   int z = x;
   x = y, y = z - y * (a / b);
}

中国剩余定理(CRT)

假设整数 m1,m2mn 两两互素,则对于任意的整数 a1,a2an ,方程组:

{xa1 (mod m1)xa2 (mod m2)...xan (mod mn)

存在整数解。

我们设 M=i=1kmi,$ M_i=\frac{M}{m_i}M_it_i≡1;;(mod;;m_i)$。

可以构造出一个解 x=i=1kaiMiti

  • 证明: 展开即可。
int a[], m[], M[];
int CRT()
{
    int MUL = 1, TJ = 0;
    for (int i = 1; i <= n; i++)
        MUL *= m[i];
    for (int i = 1; i <= n; i++)
    {
        int x, y;
        M[i] = MUL / m[i];
        exgcd(M[i], m[i], x, y);
        if (x < 0) x += m[i];
        TJ += x * M[i] * a[i];
    }
    return TJ;
}

组合数学

可重集排列和可重集组合

多重集的排列数

S={n1×a1,n×a2,nk×ak} 是由n1a1n2a2nkak组成的可重集。

那么 S 的全排列个数为 n!n1!×n2!×nk!

多重集的组合数

n 个元素中选取 m 个元素,同一元素允许重复选取,产生的组合数量为 Cn+m1m1

扩展:不定方程的非负整数解
x1+x2+x3++xn=m
非负整数解的个数为:Cn+m1m1

  • 证明

鸽巢原理

GeChao

GeChao

二项式定理

(x+y)n=k=0nCnk×xk×ynk

  • 证明:展开使用组合数分析。

容斥原理

  • 并集形式
    |A1A2A3An|=1in|Ai|1i<jn|AiAj|++(1)n+1×|A1A2An|

  • 交集形式(筛法公式)
    |SA1SA2SAn|=|S|1in|Ai|+1i<jn|AiAj|+(1)n×|A1A2An|

  • 从筛法公式理解错排公式

卡特兰数

  • 定义

长度为 n0,1 序列,满足任意前缀中 0 的个数不小于 1 的个数的排列个数为 Catn=C2nnn+1

  • 例子
    • 括号匹配
    • 出栈统计
    • 欧拉剖分

组合杂项

  • 组合数的线性预处理
LL Combine(int x, int y) {
    return fac[x] * inv[x - y] % P * inv[y] % P;
}
void Init()
{
    inv[0] = inv[1] = fac[0] = fac[1] = 1;
    for (int i = 2; i < N; i++)
    {
        inv[i] = (P - P / i)% P * inv[P % i] % P;
        fac[i] = fac[i - 1] * i % P;
    }
    for (int i = 2; i < N; i++)
        inv[i] = inv[i] * inv[i - 1] % P;
}
  • 杨辉三角与组合数
  • 组合数的结论
    • inCni=Cn1i1
    • Cn+1m=Cnm+Cnm1
    • Cm+r+1r=i=0rCm+ii
    • i=0mCmi=2m
    • Cm0+Cm2+Cm4...=Cm1+Cm3+Cm5+...=2m1
    • i=1nCnii2=n(n+1)2n2
    • i=0n(Cni)2=C2nn

线性代数

矩阵概念

X 阶矩阵:行数与列数都等于 n 的矩阵称为 n 阶矩阵或 n 阶方阵。

单位矩阵:主对角线上的元素都为 1 ,其余元素均为 0n 阶方阵称为 n 阶单位矩阵,记为 E

逆矩阵:设 A 是一个 n 阶矩阵,若存在另一个 n 阶矩阵 B ,使得: A×B=E

矩阵的迹n×n 矩阵 A 的对角元素之和称为矩阵A的迹( trace ),记作 tr(A)

特殊矩阵

  • 稀疏矩阵
    当一个矩阵的绝大部分数值为零,且非零元素呈不规律分布时,则称该矩阵为稀疏矩阵( Sparse Matrix
    与它相对的一个概念叫稠密矩阵,,那些非零数值占大多数元素的矩阵即是稠密矩阵( Dense Matrix )。

  • 三角矩阵
    三角矩阵( TriangularMatrix )分为上三角矩阵和下三角矩阵。

    • 上三角矩阵( UpperTriangularMatrix )是指主对角线以下元素全为0的矩阵。
    • 下三角矩阵( LowerTriangularMatrix )是指主对角线以上元素全为0的矩阵。
  • 对称矩阵
    对称矩阵(SymmetricMatrix)是指元素以主对角线为对称轴对应相等的矩阵。

矩阵的初等变换

  • 交换两行或两列
  • 用一个数 K 乘以某一行
  • 用某个数乘以某一行

矩阵的加减乘和转置运算

矩阵的加减乘

  • 加减法:对应的位置相加减

  • 数乘:每个位置乘以常数

  • 矩阵的转置运算:
    矩阵 A 的转置矩阵记为 AT
    它是将 A 的第 j 行变为第 j 列,第 k 列变为第 k 行所得到的矩阵。

  • 矩阵乘法
    理解:(与线性方程组之间的关系)

线性方程组的高斯消元法

  • 线性方程组求解
  • 异或方程组求解
  • 与线性空间

题目

妖梦拼木棒

Tag: 组合数
注意数据范围,暴力枚举求解。

GCD

Tag: 欧拉函数
将数拆分表示,观察到互质性质,利用欧拉函数求解。

Devu and flowers

Tag: 容斥原理,组合数

容斥原理,配上可重集组合数,通过状态压缩技巧实现容斥。

矩阵求逆

Tag: 线性代数

球迷购票问题

Tag: 卡特兰数

数学作业

Tag: 矩阵乘法

按钮

Tag: 欧拉定理,阶的概念

裴蜀定理判断有无整数解,利用欧拉定理的性质2求解。

TROKUTI

Tag: 数学性质

斜率不同的三条线必定会构成一个三角形。
相同斜率归为一类,枚举每一个类,答案每次加上 cnt[currentK]×cnt[smallerK]×cnt[largerK]

因子和

Tag: 约数和定理

正整数 x 的所有约数的和为:
(p11+p12++p1c1)×(p21+p22++p2c2)×(pk1+pk2++pkck)

最后计算时再用等比数列求和公式即可。

注意特判逆元不存在的情况。

火柴排队

Tag: 排序不等式

设有数列 {an}{bn} 按照升序排列。设 {cn}{bn} 乱序排列构成的数列。

则有:

i=1nai×bni+1i=1nai×cii=1nai×bi

顺序排列乘积和 大于等于乱序排列乘积和大于等于错序排列乘积和

题目中的式子转化为 i=1n(ai2+bi2)+2×ai×bi

显然 i=1n(ai2+bi2) 始终不改变。

故问题转化为刚刚的排序不等式 。

{bn} 可以确定唯一对应的 {an}

然后求解 {bn} 对应后的下标所构成的序列的逆序对即可。

[模板]扩展欧拉定理

Tag: 扩展欧拉定理

模板题。

前文欧拉定理的性质1。

方差

Tag: 基础数学,线段树

思路比较简单的一道题。

暴力展开需要求的方差的式子,容易发现,只需要维护区间平方和与区间和,线段树或树状数组维护即可。

约数研究

Tag: 整除分块

数据范围其实完全可以再大一点。

1n 中共有 n/ii 的倍数。

i=1nf(n)=i=1nni

整除分块的标准形式,O(n) 解决。

余数求和

Tag: 整除分块

容易得到:原式=k×ni=1ni×ki

上整除分块。

对于每一块 [l,r] 都有 [l+(l+1)++r]×kl=12×(rl+1)×(l+r)×kl

就可以做了。

回首过去

形如 xy 能表示为十进制有限小数形式,当且仅当 xy 的最简分数形式的分母只含有质因子 2,5

证明:设有一个分数 xy 满足上述条件。

  • 任意十进制有限小数都可以表示成 i×10k,ikZ 的形式,i 做分子,10k 做分母时,约分后显然可以表示成 xy 的形式。

  • 任意 xy 也可以表示为 i×10k 的形式。

综上所述,xy 与十进制有限小数是一一对应的关系,于是命题得证。

思路

将满足条件的分数表示为 b×ca×c

其中 a 只含有质因子 2,5c 不含有质因子 2,5

abcZa×cn&&b×cn

预处理出 a

考虑枚举 c,然后 while 枚举满足 a×cna 。由于 a 的个数始终单调递减,故每次 while a[cnt]nc:cnt1cnt 即为 a 的个数。

对于每个这样的 a,cbnc 种可能。于是 ans+nc×cnt

但是 n1012。。。

f(x) 表示 [1,x]a 的个数。

将答案表示为 cf(cn)×nc

想到整除分块。但是 c 并不连续,所以每一块的 length 即为 [l,r]c 的个数。容斥 2,5 计算即可。

ans+length×cnt×nc

posted @   mklzc  阅读(254)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示