码迷,mamicode.com
首页 > 其他好文 > 详细

The first blog

时间:2018-05-26 15:30:34      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:lcm   strong   back   The   flag   turn   under   ==   数论   

   第一篇,有些激动,也算一个新的开始吧。

   今天上午本来要考淘汰赛,但是老师虚晃一枪,说不考了,尽量为我们争取不淘汰一个人,其实我觉得不好,因为毕竟有些人喜欢耍游戏,哎,比如李皮皮,几乎每天都在耍,也是醉了。

  骑士:凯尔特人3:3,下一场天王山之战,抢七啊,LJ加油。   

  上午ypj讲了基本数论,还是可以。

下面给一些简单的代码嘛:

 拓展欧几里得

//ax + by = 1
//bx1 + (a%b)y1 = 1    ==>   bx + (a-a/b*b)y = 1
//  ==> ay1 + b(x1-a/b*y1) = 1
//对应  ax  + by         = 1
int egcd(int a, int b, int &x, int &y)
{
    if(b == 0)
    {
        x = 1; y = 0;
        return a;
    }
    int x1, y1;
    int e = egcd(b, a%b, x1, y1);
    x = y1;
    y = x1 - a / b * y1;
    return e;
}

最大公约数

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

最小公倍数

inline int lcm(int a, int b)
{
    return a / gcd(a, b) * b;
}

快速幂取模

int mul(int x, int y, int mod) // x^y % mod
{
    int res = 1;
    while(y)
    {
        if(y & 1) res = ((res % mod) * (x % mod)) % mod;
        x = ((x % mod) * (x % mod)) % mod;
        y >>= 1;
    }
    return res;
}



int mul(int x, int y) // x^y 
{
    int res = 1;
    while(y)
    {
        if(y & 1) res = res * x ;
        x = x * x ;
        y >>= 1;
    }
    return res;
}

筛素数

void make_prime_list(int m) // [1, m]   O(2N)
{
    for(int i = 2; i <= m; i++)
    {
        if(!flag[i]) pri[Cnt++] = i;
        for(int j = 0; j < Cnt && pri[j] <= m/i; j++)
        {
            flag[i*pri[j]] = 1;// i^2内的素数只筛选一次 
            if(i % pri[j] == 0) break;
        }
    }
}

 

The first blog

标签:lcm   strong   back   The   flag   turn   under   ==   数论   

原文地址:https://www.cnblogs.com/mark2017/p/9092943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!