标签: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; } } }
标签:lcm strong back The flag turn under == 数论
原文地址:https://www.cnblogs.com/mark2017/p/9092943.html