美文网首页
算法模板(六)基础数论

算法模板(六)基础数论

作者: 影踪派熊猫人武僧 | 来源:发表于2018-11-08 09:04 被阅读0次

gcd与lcm

#include<bits/stdc++.h>
using namespace std;
int gcd(int x,int y){
    if(b==0)return a;
    return gcd(b,a%b);
}
int lcm(int x,int y){
    return x*y/gcd(x,y);
}
int a,b;
int main(){
    cin>>a>>b;
    cout<<gcd(a,b)<<endl;
    cout<<lcm(x,y);
    return 0;
}

Lucas求组合数

#include<bits/stdc++.h>
#define maxn 100000
using namespace std;
int E[maxn];
void init(){
    E[0]=1;
    for(register int i=0;i<maxn;i++)E[i]=E[i-1]*i;
}
int inv(int a,int m){
    if(a==1)return a;
    return inv(m%a,m)*(m-m/a)%m;
}
int n,m;
int lucas(int n,int m,int p){
    int res=1;
    while(n&&m){
        int a=n%p;
        int b=m%p;
        if(a<b)return 0;
        res=res*E[a]%p*inv(E[a-b]*E[b]%p,p)%p;
        n/=p;
        m/=p;
    }
    return res;
}
int main(){
    init();
    cin>>n>>m;
    cout<<lucas(n,m,10000007);
    return 0;
}

相关文章

  • 算法模板(六)基础数论

    gcd与lcm Lucas求组合数

  • RSA加密解密算法—数论基础

    本章涉及知识点1、素数的定义2、寻找素数算法—短除法3、寻找素数算法—筛选法4、互质关系5、欧拉函数的证明6、欧拉...

  • 数论基础

    基本运算 取模(mod)取余(rem) 定义 给定一个正整数p,任意一个整数n,一定存在等式 : n = kp +...

  • 基础数论

    大数取模 ll ans=0; for(int i=0; i

  • RSA算法原理(二)

    上一次,我介绍了一些数论知识。 有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥...

  • RSA算法原理(二)

    上一次,我介绍了一些数论知识。 有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。 六、密钥...

  • 第9章 数论

    数论研究的是整数。 问题:为什么要研究整数?问题:数论有什么实际价值? 数论是现代加密技术的基础,而加密技术使得安...

  • 算法模板(五)树基础算法

    最小生成树 求树的直径 求树的重心

  • 佛历•瑜伽派

    印度婆罗门教六派哲学之一。最初它和数论派结成了姐妹学派,被称为“数论瑜伽”。 当时数论是瑜伽的理论根据,瑜伽是数论...

  • 数论——欧几里得算法

    欧几里得算法 介绍 【欧几里得算法】又名辗转相除法,是求最大公约数的算法。两个整数的最大公约数是能够同时整除它们的...

网友评论

      本文标题:算法模板(六)基础数论

      本文链接:https://www.haomeiwen.com/subject/cqsixqtx.html