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) 它的全体正因数之和
     
    , 并证明
     

     有待更新//...

  • 相关阅读:
    在vue中使用 layui框架中的form.render()无效解决办法
    Week03面向对象入门
    Week04面向对象设计与继承
    JAVA暑假作业
    Week02Java基本语法与类库
    201621123082《Java程序设计》第1周学习总结
    利用Asp.net中的AJAX制作网页上自动选取开始日期及结束日期的用户自定义控件
    错误 1 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的节是错误的
    Log4net日志记录、详细配置(自己使用)
    利用队列记录错误日志
  • 原文地址:https://www.cnblogs.com/zzyh/p/7241897.html
Copyright © 2011-2022 走看看