博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基础数论模板
阅读量:5077 次
发布时间:2019-06-12

本文共 1117 字,大约阅读时间需要 3 分钟。

目录

模板

快速幂

long long quick_power(long long a,long long b,long long c){    long long ans=1;    a=a%c;    while(b!=0)    {        if(b&1)            ans=(ans*a)%c;        b>>=1;        a=(a*a)%c;    }    return ans;}

快速乘

ll qmul(ll a,ll b,ll m){    ll ans=0;    ll k=a;    ll f=1;  //f用来存负号    if(k<0){        f=-1;        k=-k;    }    if(b<0){        f*=-1;        b=-b;    }    while(b){        if(b&1)            ans=(ans+k)%m;        k=(k+k)%m;        b>>=1;    }    return ans*f;}

素数筛

const int N = 1e7 + 5;bool isprime[N];//isprime[i]表示i是不是质数int prime[N];//prime[N]用来存质数  从1开始int tot=1;//tot表示[2,N]之间质数的数量void init(){    for(int i=2;i

GCD

int gcd(int a,int b){    return b==0?a:gcd(b,a%b);}

当然这个GCD是手写的,C++库里面也有一个GCD,很好用的,用库里面的就不需要自己手写函数了。

int c=__gcd(a,b);//c即为a和b的最大公约数

LCM

当然既然讲了GCD,那么LCM也是必要的

int lcm(int a,int b){    a=a/gcd(a,b)*b;  //注意,这里应该是先除再乘,因为先乘的话可能会爆范围    return a;}

EXGCD

int exGcd(int a,int b,int &x,int &y){    if(b==0){        x=1;        y=0;        return a;    }    int r=exGcd(b,a%b,x,y);    int tmp=x;    x=y;    y=tmp-a/b*y;    return r;}

转载于:https://www.cnblogs.com/fjqfjq/p/10021190.html

你可能感兴趣的文章
常量优化机制
查看>>
UIVIEW圆角和边框设置
查看>>
pcb过孔盖油
查看>>
两天笔记
查看>>
对TCP/IP协议的一些看法(10):TCP协议(2)
查看>>
IE下window.onresize被多次执行的解决
查看>>
多选框全选js
查看>>
Python学习第四天
查看>>
121. Best Time to Buy and Sell Stock(动态规划)
查看>>
oracle 修改表的sql语句
查看>>
OpenNI2安装
查看>>
[Leetcode] Valid Parentheses
查看>>
[8.1] Triple Step
查看>>
JAVA网络编程
查看>>
《DSP using MATLAB》示例Example7.4
查看>>
tcp断开过程
查看>>
手机工作平台的搭建
查看>>
[CareerCup] 9.8 Represent N Cents 组成N分钱
查看>>
POJ - 1330 Nearest Common Ancestors(dfs+ST在线算法|LCA倍增法)
查看>>
MD5,sha1加密工具类
查看>>