zoukankan      html  css  js  c++  java
  • noip数学

    一、取模运算

    (1)定义

    给定一个正整数p和一个整数n 一定存在此等式 n=k*p+r;其中k,r是整数,r大于等于0小于p

    称k是n除以p的商,r为n除以p的余数

    说明:同余式 正整数a,b对p取模,它们的余数相同 记作 a≡b (mod p)

              整数分为p个等价类,称为模p的剩余类

              n%p所得结果的正负由n决定,与p无关。如:7%4=3,-7%4=-3,-7%-4=-3;

    (2)基本性质

    若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)

    传递性:a≡b (% p),b≡c (% p),则a≡c (% p)

    对称性:a≡b (% p)等价于b≡a (% p)

    (3)运算规则

    (a+b)%p=(a%p+b%p)%p

      (a-b)  %p=(a%p-b%p+p)%p //一定+p

      (a*b)%p=(a%p*b%p)%p //可能会爆long long 快速乘

    结合律:((a+b)%p+c)%p=(a+(b+c)%p)%p

    交换律:((a+b)%p*c)=(a*c%p+b*c%p)%p

    (4)重要定理:

    如果a≡b (% p),则

    (a+c)≡(b+c) (% p),(a*c)≡(b*c) (% p)//c是任意的

    若a≡b (% p),c≡d (% p),则a+c≡b+d (% p),a-c≡b-d (% p),a*c≡b*d (% p),a/c≡b/d(% p)

    (5)代码实现

    //同余方程求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解 
    #include<iostream>
    #include<cstdio>
    using namespace std;
    int a,b,x,y;
    int gcd(int a,int b,int &x,int &y)
    {
        if(!b){
            x=1;
            y=0;
            return a;
        }
        int ans=gcd(b,a%b,y,x);
        y-=(a/b)*x;
        return ans;
    }
    int  main()
    {
        scanf("%d%d",&a,&b);
        gcd(a,b,x,y);
        while(x<=0)x+=b;
        printf("%d
    ",x);
        return 0;
    }

    二、乘法逆元

    (a/b)%p=???

    为了方便讨论,我们只讨论正整数群上的乘法逆元。

    (1)定义:

    若存在正整数a,b,p,满足a*b≡1(% p),则称a是b的乘法逆元或者称b是a的乘法逆元。

    在mod 7意义下,3的乘法逆元是5,在mod 6意义下2的乘法逆元是多少呢??

    在mod 6意义下不存在2的乘法逆元

    (2)乘法逆元存在性定理

    对于ab≡1(% p),如果a与p互质,则一定存在一个正整数b满足b<p,否则不存在。

    证明:对于上述同余方程,可得,ab-pk=1。对于ax+by=z,只有当z是gcd(a,b)的倍数时才有解。

    所以gcd(a,p)=1,所以a,p互质时才存在b

    (3)求乘法逆元

    欧拉定理 费马小定理 扩展欧几里得 线性求逆元

    三、欧拉函数

    (1)定义

    欧拉函数φ(n)表示小于等于n且与n互质的正整数的个数

    特别的φ(1)=1。欧拉函数是积性函数

    (2)欧拉函数公式

    令n=Π(i=1-k)pi的ci次方为n的质因子分解式,则有

    φ(n)=n*Π(i=1--k)(pi-1)/pi

    (3)性质

    a、若p为质数,则φ(p)=p-1

         证明:代公式。

    b、若p为质数,则φ(p^k)=(p-1)*(p^(k-1))

         证明:若p是质数,在p^k内只有p的倍数不与p^k互质,p的倍数有p^k/p=p^(k-1)次方个。

          则,φ(p^k)=p^k-p^(k-1)=(p-1)*p^(k-1)

    c、欧拉函数是积性函数,若n,m互质,则φ(nm)=φ(n)φ(m)

    d、当n是奇数时,φ(2n)=φ(2)*φ(n)=φ(n),因为此时2与n互质,满足c性质

    e、若n>2,则φ(n)为偶数

         证明:

         ①当n是质数时,φ(n)=n-1,因为n是大于2的质数,所以n一定是奇数,n-1一定是偶数

         ②当n是合数时,

    f、当n>1时,1--n与n互质的数的和为 n*φ(n)/2

    (4)欧拉定理

    a^(φ(p))≡1(mod p) 对任意互质的a,p都成立

    a*a^(φ(p)-1)≡1(mod p) ,然后用快速幂求乘法逆元

    四、费马小定理

    对于任意互质的a,p(p为质数恒成立)

    a^(p-1)≡1(mod p)

    费马小定理是欧拉定理在p为质数时的推论,用于降低题目难度,竞赛中常见的质数998244353,1000000009

    五、欧几里得算法及扩展

    (1)欧几里得算法

    gcd(a,b)=gcd(b,a%b).O(logn)求两个数的最大公约数

     (2)扩展欧几里得算法

    扩展欧几里得用于求形如 ax+by=gcd(a,b)的一组解,保证求出的解|x|+|y|最小。

    求解过程:

    由ax+by=gcd(a,b)得出另一个式子,bx'+a%by'=gcd(b,a%b),

    由于gcd(a,b)=gcd(b,a%b),

    所以ax+by=bx'+a%by'

           ax+by=bx'+(a-a/b*b)y'

           ax+by=bx'+ay'-a/b*by'

           ax+by=b(x'-a/by')+ay'

    所以 x=y',y=x'-a/by'。
    所以这个方程的x,y可以由我们构造的方程求出,这样递归下去求解。

    递归边界,b=0时,此时,ax+0*y=a。所以到边界时a=1,b为任意值。(代码上b=0的,试了一下任何值都可以)

    代码实现:

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

    (3)扩展欧几里得求逆元

    由ab≡1(% p)

    则ab-k*p=1,若gcd(a,p)=1则存在b为a的逆元。

    复杂度O(logn)

    六、线性筛素数

    (1)引入

    在之前的埃拉托色尼筛素数的方法中,16这个数被2,4,8筛掉,发现一个数被多个数筛掉很不划算。

    那么怎样让一个数被只被一个数筛去呢?我们可以保证每个数只被它最小的质因子筛掉。时间复杂度O(n)

    (2)理解

    首先推荐一篇论文,很好理解。我就不赘述。

    (3)代码实现

    #include<iostream>
    #include<cstdio>
    using namespace std;
    int n,m,cnt,check[100],prime[100];
    void Prime(int n)
    {
        check[1]=1;
        for(int i=2;i<=n;i++)
        {
            if(!check[i])
            prime[++cnt]=i;
            for(int j=1;j<=cnt&&i*prime[j]<=n;j++)
            {
                check[i*prime[j]]=1;
                if(i%prime[j]==0)break;
            }
        }
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        Prime(n);
        for(int i=1;i<=m;i++)
        {
            scanf("%d",&x);
            if(!check[x])printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }

    七、数论函数

    (1)定义

    a、定义域为正整数,陪域为复数的函数称为数论函数。(对于陪域和复数的概念我不理解)

    b、积性函数 对于所有互质的正整数a,b满足f(a*b)=f(a)*f(b),完全积性函数是对于所有的正整数a,b都满足上式。

    (2)常见的数论函数

    1、对于任意正整数x,函数值均为1

    e、对于正整数x,若x=1,函数值为1,否则为0

    n、对于任意正整数x函数值均为x

    以上为完全积性函数。

    d:对于任意正整数x,函数值为它的正因子个数

    φ:对于正整数x,函数值为小于等于它且与它互质的正整数的个数

    μ:对于正整数x,设正整数x的质因子分解为 x=累乘i=1--k ai^pi,若存在pi≥2则函数值

    为0,否则为(-1)^k,特殊的μ(1)=1

    以上为积性函数。

     八、莫比乌斯反演(没补全)

    (1)引入

    设,有F(n)=sigma[f(d)],d|n。

    例如:

    F(1)=f(1)

    F(2)=f(1)+f(2)

    F(3)=f(1)+f(3)

    F(4)=f(1)+f(2)+f(4)

    F(5)=f(1)+f(5)

    F(6)=f(1)+f(2)+f(3)+f(6)

    F(7)=f(1)+f(7)

    F(8)=f(1)+f(2)+f(4)+f(8)

    可求得:

    f(1)=F(1)

    f(2)=F(2)-F(1)

    f(3)=F(3)-F(1)

    f(4)=F(4)-F(2)

    f(5)=F(5)-F(1)

    f(6)=F(6)-F(3)-F(2)+F(1)

    f(7)=F(7)-F(1)

    f(8)=F(8)-F(4)

    发现了什么??

    F(n)=sigma[f(d)]   =》f(n)=sigma[u(d)*F(n/d)], d|n

    其中μ(d)为莫比乌斯函数,给出的定义如下。

    当d=1时,μ(d)=1

    当d=p1*p2*p3...*pr时,μ(d)=(-1)^r,其中pi是互不相同的素数

    其他情况μ(d)=0

    (2)莫比乌斯函数的性质

    ①莫比乌斯函数是积性函数,积性函数的性质,a、f(1)=1,b、积性函数的前缀和也是积性函数。

    九、BSGS

    求解形如 x ^y ≡ z(mod p) 中 y 的取值的算法.

    设y=km+i则原同余式为x^km+i ≡ z(mod p)=》x^i≡z*x^(-km)

    Baby Step:x^i可以预处理扔进一个map

    Gaint Step: 枚举k,查找是否存在z*x^(-km)

    十、杨辉三角

    (1)引入

    杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。杨辉三角形同时对应于二项式定理的系数。

    (2)杨辉三角

    (3)性质

    a、每个数等于它上方两数之和

    b、每行数字左右对称,由1开始逐渐变大

    c、第n行的数字有n项

    d、第n行的数字和为2^(n-1)

    e、第n行的m个数可表示为C(n-1,m-1),即从n-1个不同元素中取出m-1个元素的组合数

    补充:

    f、第n行的第m个数与第n-m+1个数相等

    g、每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)

    ....

    (4)应用

     十一、质因数分解定理

    (1)任何一个大于1的自然数n,如果n不为质数,那么n可以被唯一分解为有限个质数的乘积的形式,

    N=P1a1P2a2P3a3......Pnan,这里P1<P2<P3......<Pn均为质数,其中指数ai是正整数。这样的分解称为 的标准分解式

    (2)一个大于1的正整数N,如果它的标准分解式为:  ,那么它的正因数个数为

      
     
     
    (3) 它的全体正因数之和
     
    , 并证明
     

     有待更新//...

  • 相关阅读:
    函数
    python操作文件
    POJ-2689-Prime Distance(素数区间筛法)
    POJ-2891-Strange Way to Express Integers(线性同余方程组)
    POJ-2142-The Balance
    POJ-1061-青蛙的约会(扩展欧几里得)
    Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
    Educational Codeforces Round 75 (Rated for Div. 2) C. Minimize The Integer
    Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
    Educational Codeforces Round 75 (Rated for Div. 2) A. Broken Keyboard
  • 原文地址:https://www.cnblogs.com/zzyh/p/7241897.html
Copyright © 2011-2022 走看看