zoukankan      html  css  js  c++  java
  • 基础数论总结

    虽然数论很辣鸡,也没刷什么题,但还是做一个小小的总结吧!


    EXGCD

    这个版块其实没有专门去打题,感觉对于题目来说就是要抽象出对应的ax+by=c这样的方程吧!(目前还没有遇到什么特别奇特的题目)


    逆元

    求逆元其实有不同的方法,详细参见


     中国剩余定理

    中国剩余定理主要是起一个工具的作用吧!对于扩展类的算法,起了一个合并的作用(多少把不是质数的模数拆为几个质数相乘)

    但在代码实现还是要具体说一下,有一篇博客解释的很详细

    那么代码其实就很简洁了,并没有我的那篇博客里写的那么复杂

    LL CRT(LL a,LL p,LL x)//x是当前拆出的质数
    {
        return inv(p/x,x)*(p/x)%p*a%p;
    }

    而如果是模板题思想的话,就拆成这样的形式:

    然后套板子就行


    欧拉定理

    这篇

    但其实真正用到很多的性质其实是这个

    当指数很大时就用到这个性质。

    费马小定理其实就是欧拉定理的一个特殊情况罢了(模数是质数)


    Lucas

    用于组合数取模(且要求p不能太大)

    基础见这篇

    然后是扩展Lucas


    BSGS

    A,C互质就BSGS,不互质就exBSGS(如果x太大可以考虑一下能不能使用欧拉定理)

    这篇


    快速幂与龟速乘

    快速幂没有什么好说的了

    ll quick(ll t,ll x,ll mod)
    {
        ll ans=1; 
        while(x)
        {
            if(x&1) ans=ans*t%mod;
            t=t*t%mod;
            x=x>>1;
        }
        return ans%mod;
    }
    快速幂

    龟速乘防止爆long long

    这篇


    线性筛

    当然不只是用来筛素数,还可以预处理积性函数


    整除分块

    其实就是一个小技巧而已


    至于莫比乌斯反演和杜教筛,因为这篇是总结基础数论,所以就先不写,至于FFT,NTT,斯特林数那些我还真没懂。。。

    那么就再放两道我认为还不错的题吧!(我好像没怎么做题,才两道)

    古代猪文

    可以在写exLucas前先写一下,比较两种做法,有助于理解exLucas。

    poj1845

    对约数的掌握和龟速乘



    个人觉得数论就是中国剩余定理合并,欧拉定理的那个指数取模比较常见吧!

    对于素数的问题也是很经典和常见,那些考过的题也可以拿出来复习复习。

    更多的就是数学思想了,要看题(糟了,没怎么写题,不喜欢写题可不是好事)

    嗯,多多积累吧!

  • 相关阅读:
    98.公共汽车
    100.选菜(动态规划)01背包
    102.愤怒的LJF
    96.老鼠的旅行(动态规划)
    95.(01背包)之小吃
    94.Txx考试
    93.数字三角形W(深搜)
    POJ 3352 Road Construction (边双连通分量)
    POJ 3114 Countries in War(强联通分量+Tarjan)
    POJ 3592 Instantaneous Transference(强联通分量 Tarjan)
  • 原文地址:https://www.cnblogs.com/yyys-/p/11311860.html
Copyright © 2011-2022 走看看