GCD

来源:互联网 发布:群组推荐算法 编辑:程序博客网 时间:2024/06/03 06:10
很骚的get///用于计算a和b的最大公约数gcd和最小公倍数lcmLL gcd(LL a,LL b){return b==0?a:gcd(a,b%a);}LL lcm(LL a,LL b) {return a/gcd(a,b)*b;}///为什么要先除后乘呢,因为存在超过long long的情况,所以先除相对来说更安全一点///用于计算ax==b(mod m)的一个特解(返回值最小),如果没有特解返回m本身LL gcd_ex(LL a,LL b,LL &x,LL &y){    if(b==0) {x=1;y=0;return a;}    LL d=gcd_ex(b,a%b,y,x);    y=y-a/b*x;    return d;}LL solve(LL a,LL b,LL m){    LL x,y;LL d=gcd_ex(a,m,x,y);    if(b%d==0){x%=m;while(x<0) x+=m;x%=m;return x*(b/d)%(m/d);}    else return m;}
原创粉丝点击