数论

https://codeforces.com/contest/1993/problem/C 题目大意 给定 $n$ 盏灯和 $n$ 长数组 $a_i (1 \le a_i \le 10^9)$ 和 $k$,$1 \le k \le n \le 2 \cdot 10^5$。 起初 $n$ 盏灯都不亮。$i$ 位置的灯在 $a_i$ 时刻第一次点亮,之后每过 $k$ 单位时间点亮熄灭状态反转一次。问最早什么时刻,所有灯都亮
扩展欧几里得算法(ExGCD) // ax+by=gcd(a,b)=g // check a>0 b>0 // if a != b, |x|<b, |y|<a template<typename T> void exgcd(T a,T b,T &g,T &x,T &y) { if(!b) { g=a; x=1; y=0; } else { exgcd(b,a%b,g,y,x); y-=a/b*x; } } 求逆元 template<typename T> void exgcd(T a,T b,T &g,T &x,T &y) { if(!b) { g=a; x=1; y=0; } else { exgcd(b,a%b,g,y,x); y-=a/b*x; } } template<typename T> T inv(T a,T m) { T g,x,y; exgcd(a,m,g,x,y); if(g!=1) return -1; // no inverse element if(x<0) x+=m; return x; } 不定方
扩展欧几里得算法 有时我们需要求解类似于 $ax+by=m$ 的不定方程(丢番图方程),扩展欧几里得算法就是求解这样方程的利器。 除此以外我们可以通过简单地变形处理模逆元和线性同余方程。 裴蜀定理/贝祖定理(Bezout&rs
最大公约数(GCD)与欧几里得算法 最大公约数(Greatest Common Divisor,GCD) 两个数最大公约数顾名思义,两个数的所有公约数中最大的。 若正整数 $a,b$ 的质因数分解为 $$a = \prod_{i} p_i ^ {e_{a,i}}$$ $$b = \prod_{i} p_i ^ {e_{b,i}}$$ 则其最大公
模下计算 普通 const int MO=1e9+7; inline int add(int x,int y) { x+=y; if(x>=MO) x-=MO; return x; } inline int sub(int x,int y) { x-=y; if(x<0) x+=MO; return x; } inline int mul(int x,int y) { return 1LL*x*y%MO; } inline void addv(int &x,int y) { x+=y; if(x>=MO) x-=MO; } inline void subv(int &x,int y) { x-=y; if(x<0) x+=MO; } inline void mulv(int &x,int y) { x=1LL*x*y%MO; } int qp(int x,int n) { int ans=1; while(n) { if(n&1) { mulv(ans,x); } mulv(x,x); n>>=1; } return ans; } ModInt template<int MO=1000000007> struct ModInt { int x; ModInt(int x=0):x(x){ norm();
E - Coprime 题目大意 给出数组 $A$ 如果其中数字两两互质则返回 “pairwise coprime”,如果整个数组 $gcd$ 为 $1$ 则返回 “setwise coprime”,其他情况返回 “not coprime” 简要题解 显然 setwise 很好判