当前位置: 首页 > news >正文

【算法】简单数论

模运算

  • a m o d b = a − ⌊ a / b ⌋ × b a\ mod \ b = a - \lfloor a / b \rfloor \times b a mod b=aa/b×b

  • n m o d p n \ mod\ p n mod p得到的结果的正负至于被除数 n n n有关

image-20250404133801773

模运算的性质:

( a + b ) m o d m = ( ( a m o d m ) + ( b m o d m ) ) m o d m (a + b)\ mod\ m = ((a\ mod\ m) + (b\ mod\ m))\ mod\ m (a+b) mod m=((a mod m)+(b mod m)) mod m

( a − b ) m o d m = ( ( a m o d m ) − ( b m o d m ) ) m o d m (a - b)\ mod\ m = ((a\ mod\ m) - (b\ mod\ m))\ mod\ m (ab) mod m=((a mod m)(b mod m)) mod m = ( ( a m o d m ) − ( b m o d m ) + m ) m o d m ((a\ mod\ m) - (b\ mod\ m) + m)\ mod\ m ((a mod m)(b mod m)+m) mod m

( a × b ) m o d m = ( ( a m o d m ) × ( b m o d m ) ) m o d m (a \times b)\ mod\ m = ((a\ mod\ m) \times (b\ mod\ m))\ mod\ m (a×b) mod m=((a mod m)×(b mod m)) mod m

但是除法例外,除法的取模需要用到逆元。

计算减法的时候,通常需要加上模数,防止出现负数。

乘法逆元

a × x ≡ 1 ( m o d b ) a \times x \equiv 1 \ (mod \ b) a×x1 (mod b),且 a a a b b b互质,我们定义 x x x a a a的逆元,记为 a − 1 a^{-1} a1, x x x可称为 a a a在模 b b b意义下的倒数

对于 a b m o d p \frac{a}{b} \ mod \ p ba mod p,我们可以求出 b b b m o d p mod \ p mod p意义下的逆元,然后乘上 a a a,再 m o d p mod \ p mod p即可

注意对于数 a a a在模 p p p意义下的乘法逆元,我们需要确保 a a a p p p互质,此时才有 a a a的乘法逆元 a − 1 a^{-1} a1,此条件等价于 p p p是质数

费马小定理

a p − 1 ≡ 1 ( m o d p ) a^{p - 1} \equiv 1 \ (mod \ p) ap11 (mod p),其中 p p p是素数

费马小定理求逆元
a × a p − 2 ≡ 1 ( m o d p ) a \times a^{p - 2} \equiv 1 \ (mod\ p) a×ap21 (mod p),根据乘法逆元的定义可知,此时 a − 1 = a p − 2 a^{-1} = a^{p - 2} a1=ap2

扩展欧几里得求逆元

根据逆元的定义 a x ≡ 1 ( m o d p ) ax \equiv 1 \ (mod \ p) ax1 (mod p),我们得到方程: a x − 1 = y p ax - 1 = yp ax1=yp a x − 1 ax - 1 ax1 p p p的倍数),则 a x + p y = 1 ax + py = 1 ax+py=1

解方程得 x m o d p x \ mod \ p x mod p得到的就是 a a a的乘法逆元,同时逆元存在的条件是 g c d ( a , p ) = 1 gcd(a, p) = 1 gcd(a,p)=1

求阶乘的乘法逆元

同余

两个整数 a a a b b b对用一个正整数 m m m取模后余数相同,则称 a a a b b b对模 m m m同余,记作 a ≡ b ( m o d m ) a \equiv b \ (mod\ m) ab (mod m),这意味着 m ∣ ( a − b ) m\ | \ (a - b) m  (ab)

同余的性质:

  • 自反性: a ≡ a ( m o d m ) a \equiv a \ (mod\ m) aa (mod m)
  • 对称性:若 a ≡ b ( m o d m ) a \equiv b \ (mod \ m) ab (mod m),则 b ≡ a ( m o d m ) b \equiv a \ (mod \ m) ba (mod m)
  • 传递性:若 a ≡ b ( m o d m ) , b ≡ c ( m o d m ) a \equiv b \ (mod\ m), b \equiv c \ (mod\ m) ab (mod m),bc (mod m),则 a ≡ c ( m o d m ) a \equiv c \ (mod\ m) ac (mod m)
  • 同加性:若 a ≡ b ( m o d m ) a \equiv b \ (mod\ m) ab (mod m),则 a ± c ≡ b ± c ( m o d m ) a \pm c \equiv b \pm c \ (mod\ m) a±cb±c (mod m)
  • 同乘性:若 a ≡ b ( m o d m ) a \equiv b \ (mod\ m) ab (mod m),则 a × c ≡ b × c ( m o d m ) a \times c \equiv b \times c \ (mod\ m) a×cb×c (mod m),若 a ≡ b ( m o d m ) , c ≡ d ( m o d m ) a \equiv b \ (mod \ m), c \equiv d \ (mod \ m) ab (mod m),cd (mod m),则 a × c ≡ b × d ( m o d m ) a \times c \equiv b \times d \ (mod\ m) a×cb×d (mod m)
  • 同幂性:若 a ≡ b ( m o d m ) a \equiv b \ (mod \ m) ab (mod m),则 a c ≡ b c ( m o d m ) a^c \equiv b^c \ (mod\ m) acbc (mod m)
  • 不满足同除性,但是有,若 c a ≡ c b ( m o d m ) ca \equiv cb \ (mod \ m) cacb (mod m),则 a ≡ b ( m o d m g c d ( m , c ) ) a \equiv b \ (\ mod \ \frac{m}{gcd(m, c)}) ab ( mod gcd(m,c)m)

扩展欧几里得定理

对于给定的两个整数 a a a b b b,必须存在整数 x x x y y y,使得 a × x + b × y = g c d ( a , b ) a \times x + b \times y = gcd(a, b) a×x+b×y=gcd(a,b)

裴蜀定理

方程 a × x + b × y = c a \times x + b \times y = c a×x+b×y=c有整数解的充分必要条件是 c c c g c d ( a , b ) gcd(a, b) gcd(a,b)的倍数

证明:

  • 必要性:令 p = g c d ( a , b ) p = gcd(a, b) p=gcd(a,b),则有 a = p × a ′ a = p \times a' a=p×a b = p × b ′ b = p \times b' b=p×b;则 c = p × ( a ′ x + b ′ y ) c = p \times (a'x + b'y) c=p×(ax+by),即 g c d ( a , b ) gcd(a, b) gcd(a,b)的倍数。

  • 充分性:考虑 g c d gcd gcd的欧几里得算法。 a , b a, b a,b通过 b , a % b b, a \% b b,a%b的方式一直辗转下去,最后会出现 p , 0 p, 0 p,0的形式。原因是$0 \leq a % b \leq b - 1 。对于递归出口 。对于递归出口 。对于递归出口p, 0 ,方程 ,方程 ,方程a \times p + 0 \times y = c 是否存在解呢?显然有解,由于充分性,这里 是否存在解呢?显然有解,由于充分性,这里 是否存在解呢?显然有解,由于充分性,这里a 取 取 \frac{c}{p}$即可。那么辗转相除过程中,下面的成立能否推得上面的成立呢?

    • 对于方程 b x 1 + a % b × y 1 = c = a x + b y bx_1 + a \% b \times y_1 = c = ax + by bx1+a%b×y1=c=ax+by

    • 左边 = b x 1 + ( a − ⌊ a b ⌋ × b ) × y 1 = a y 1 + b x 1 − ⌊ a b ⌋ × b y 1 = a y 1 + b × ( x 1 − ⌊ a b ⌋ × y 1 ) = 右边 = a x + b y 左边 = bx_1 + (a - \lfloor \frac{a}{b} \rfloor \times b) \times y_1 = ay_1 + bx_1 - \lfloor \frac{a}{b} \rfloor \times by_1 = ay_1 + b \times (x_1 - \lfloor \frac{a}{b} \rfloor \times y_1) = 右边 = ax + by 左边=bx1+(aba×b)×y1=ay1+bx1ba×by1=ay1+b×(x1ba×y1)=右边=ax+by

      所以找到一组特解: x = y 1 x = y_1 x=y1 y = x 1 − ⌊ a b ⌋ × y 1 y = x_1 - \lfloor \frac{a}{b} \rfloor \times y_1 y=x1ba×y1,就可以通过最下面的特解推得所有的特解。

    • 对于特解 ( x 0 , y 0 ) (x_0, y_0) (x0,y0),设下一组解是 ( x 0 + d 1 , y 0 + d 2 ) (x_0 + d_1, y_0 + d_2) (x0+d1,y0+d2)

      a × ( x 0 + d 1 ) + b × ( y 0 + d 2 ) = c a \times (x_0 + d_1) + b \times (y_0 + d_2) = c a×(x0+d1)+b×(y0+d2)=c,又, a × x 0 + b × y 0 = c a \times x_0 + b \times y_0 = c a×x0+b×y0=c,则 a d 1 + b d 2 = 0 ad_1 + bd_2 = 0 ad1+bd2=0

      故, d 1 d 2 = − b a = − b / g c d ( a , b ) a / g c d ( a , b ) \frac{d_1}{d_2} = -\frac{b}{a} = -\frac{b / gcd(a, b)}{a / gcd(a, b)} d2d1=ab=a/gcd(a,b)b/gcd(a,b)

      d 1 = b g c d ( a , b ) d_1 = \frac{b}{gcd(a, b)} d1=gcd(a,b)b d 2 = − a g c d ( a , b ) d_2 = -\frac{a}{gcd(a, b)} d2=gcd(a,b)a,故一般解为:

      x = x 0 + k × b g c d ( a , b ) x = x_0 + k \times \frac{b}{gcd(a, b)} x=x0+k×gcd(a,b)b y = y 0 − k × a g c d ( a , b ) ( k ∈ Z ) y = y_0 - k \times \frac{a}{gcd(a, b)} \ (k \in Z) y=y0k×gcd(a,b)a (kZ)

    • 若要求 x x x的最小整数解,则可以通过 ( x 0 m o d ( b g c d ( a , b ) ) + b g c d ( a , b ) ) m o d x 0 (x_0 \ mod \ (\frac{b}{gcd(a, b)}) + \frac{b}{gcd(a, b)}) \ mod \ x_0 (x0 mod (gcd(a,b)b)+gcd(a,b)b) mod x0,原因是 x 0 x_0 x0的周期是 b g c d ( a , b ) \frac{b}{gcd(a, b)} gcd(a,b)b,所以可通过取模的方式得到结果

扩展欧几里得算法

ex

GCD

最大公约数:欧几里得算法,时间复杂度 O ( l o g a ) O(log\ a) O(log a)

g c d ( a , b ) = g c d ( b , a m o d b ) gcd(a, b) = gcd(b, a\ mod\ b) gcd(a,b)=gcd(b,a mod b)

证明如下:

  • p = g c d ( a , b ) p = gcd(a, b) p=gcd(a,b),则有 a = p × a ′ a = p \times a' a=p×a b = p × b ′ b = p \times b' b=p×b g c d ( a ′ , b ′ ) = 1 gcd(a', b') = 1 gcd(a,b)=1

    • a m o d b = a − ⌊ a / b ⌋ × b = p × a ′ − p × b ′ × ⌊ a / b ⌋ a\ mod\ b = a - \lfloor a / b \rfloor \times b = p \times a' - p \times b' \times \lfloor a / b \rfloor a mod b=aa/b×b=p×ap×b×a/b

    • 可以看出,$p \ | \ b $, p ∣ ( a m o d b ) p \ | \ (a \ mod \ b) p  (a mod b)

  • 那么 p p p是否是最大公约数呢?即我们需要证明 g c d ( b ′ , a ′ − b ′ × ⌊ a / b ⌋ ) = 1 gcd(b', a' - b' \times \lfloor a / b \rfloor) = 1 gcd(b,ab×a/b⌋)=1

    • g c d ( b ′ , a ′ − b ′ × ⌊ a / b ⌋ ) = d gcd(b', a' - b' \times \lfloor a / b \rfloor) = d gcd(b,ab×a/b⌋)=d,则有 b ′ = d × b ′ ′ b' = d \times b'' b=d×b′′ a ′ − b ′ × ⌊ a / b ⌋ = d × c a' - b' \times \lfloor a / b \rfloor = d \times c ab×a/b=d×c
    • 转换得到 a ′ = d × c + b ′ × ⌊ a / b ⌋ = d × c + d × b ′ ′ × ⌊ a / b ⌋ a' = d \times c + b' \times \lfloor a / b \rfloor = d \times c + d \times b'' \times \lfloor a / b \rfloor a=d×c+b×a/b=d×c+d×b′′×a/b
    • 可以发现 d ∣ b ′ d\ |\ b' d  b d ∣ a ′ d\ | \ a' d  a,与上述 g c d ( a ′ , b ′ ) = 1 gcd(a', b') = 1 gcd(a,b)=1矛盾,则命题得证。

欧拉函数

1... N 1...N 1...N中与 N N N互质的数的个数,被称为欧拉函数,记作 ϕ ( N ) \phi(N) ϕ(N)

在唯一分解定理中, N = p 1 a 1 × p 2 a 2 × . . . × p m a m N = p_1^{a_1} \times p_2^{a_2} \times ...\times p_m^{a_m} N=p1a1×p2a2×...×pmam,则 ϕ ( N ) = N × p 1 − 1 p 1 × p 2 − 1 p 2 × . . . × p m − 1 p m \phi(N) = N \times \frac{p_1 - 1}{p_1} \times \frac{p_2 - 1}{p_2} \times ... \times \frac{p_m - 1}{p_m} ϕ(N)=N×p1p11×p2p21×...×pmpm1

质数

分解质因数

给定一个数 x x x,由唯一分解定理可知, x = p 1 a 1 × p 2 a 2 × p 3 a 3 . . . ( p 1 < p 2 < p 3 ) x = p_1^{a_1} \times p_2^{a_2} \times p_3^{a_3}...\ (p_1 < p_2 < p_3) x=p1a1×p2a2×p3a3... (p1<p2<p3),我们从小到大枚举每一个数,最先整除 x x x的除数 n n n一定是素数。同时将这个数中所有 n n n的因子除干净,那么下次 x x x被整除时除数也是素数,从而分解了质因数。

#include <bits/stdc++.h>
using namespace std;int main() {int n;cin >> n;for (int i = 0; i < n; i ++) {int x;cin >> x;map<int, int> cnt;vector<int> res;for (int j = 2; j <= x / j; j ++) {if (x % j != 0) continue;res.push_back(j);while (x % j == 0) {cnt[j] ++;x /= j;}}if (x > 1) {res.push_back(x);cnt[x] ++;}for (auto& u : res) {cout << u << " " << cnt[u] << endl;}cout << endl;}return 0;
}

普通筛法

给定一个整数 x x x,并筛掉所有倍数,如 2 x , 3 x , 4 x . . . 2x, 3x, 4x... 2x,3x,4x...

筛完后, v i s [ i ] = f a l s e vis[i] = false vis[i]=false的为素数

这种方法的时间复杂度是 O ( n l o g n ) O(n\ log\ n) O(n log n)级别

对于每一个外层循环变量 i i i,内层循环枚举所有不超过 n n n i i i的倍数,枚举次数是 ⌊ n i ⌋ \lfloor \frac{n}{i} \rfloor in,又 ⌊ n i ⌋ < n i \lfloor \frac{n}{i} \rfloor < \frac{n}{i} in<in,有调和级数的渐近公式 ∑ i = 1 n 1 i ≈ l n ( n + 1 ) + 0.577218 \sum^{n}_{i = 1} \frac{1}{i} \approx ln(n + 1) + 0.577218 i=1ni1ln(n+1)+0.577218,其中 0.577218 0.577218 0.577218是欧拉常数

所以复杂度是 O ( n l o g n ) O(n\ log\ n) O(n log n)级别

虽然这个筛法的时间复杂度很差,但是调和级数枚举引人深思,这种枚举方式非常巧妙,而且复杂度仅有 O ( l o g n ) O(log\ n) O(log n)级别

埃式筛法

在调和级数枚举的筛法中,我们发现枚举4的倍数无意义,因为从这里筛掉的数一定从2的倍数里筛掉了,所以我们想到:只用质数去筛

其复杂度只有 O ( n l o g l o g n ) O(n\ log\ log\ n) O(n log log n)

#include <bits/stdc++.h>
using namespace std;const int N = 1e6 + 10;
int cnt, primes[N], n;
bool st[N];int main() {cin >> n;for (int i = 2; i <= n; i ++) {if (st[i]) continue;primes[cnt ++] = i;for (int j = 2 * i; j <= n; j += i) {st[j] = true;}}cout << cnt << endl;return 0;
}

欧拉筛

通过对埃氏筛法的分析,我们发现 6 = 2 × 3 6 = 2 \times 3 6=2×3会被质数 2 2 2 3 3 3各筛一次。一个数有多少个质因子,它就会被筛多少次。那么我们能否让一个数只被筛掉一次呢?

欧拉筛法可以做到并且每个数会被它的最小质因子筛掉

#include <bits/stdc++.h>
using namespace std;const int N = 1e6 + 10;
int cnt, primes[N], n;
bool st[N];int main() {cin >> n;for (int i = 2; i <= n; i ++) {if (!st[i]) primes[cnt ++] = i; //是素数for (int j = 0; j < cnt && primes[j] <= n / i; j ++) {st[primes[j] * i] = true;if (i % primes[j] == 0) break;}}cout << cnt << endl;return 0;
}
  • x = i × p r i m e s [ j ] x = i \times primes[j] x=i×primes[j]
  • i m o d p r i m e s [ j ] ≠ 0 i \ mod \ primes[j] \neq 0 i mod primes[j]=0,则 i i i中没有 p r i m e s [ j ] primes[j] primes[j]这个质因子。又因为 j j j是从小到大遍历的,所以 p r i m e s [ j ] < i primes[j] < i primes[j]<i,则 p r i m e s [ j ] primes[j] primes[j] x x x的最小质因子
  • i m o d p r i m e s [ j ] = 0 i \ mod \ primes[j] = 0 i mod primes[j]=0 ,说明 p r i m e s [ j ] primes[j] primes[j] i i i的一个质因子。又因为 j j j是从小到大遍历的,所以 p r i m e s [ j ] primes[j] primes[j] i i i的最小质因子。所以 p r i m e s [ j ] primes[j] primes[j] x x x的最小质因子
  • 综上所述,每个数都是被其最小质因子 p r i m e s [ j ] primes[j] primes[j]筛掉且只会被筛掉一次

约数

约数个数

对于一个正整数 x x x,由于唯一分解定理, x = p 1 a 1 × p 2 a 2 × p 3 a 3 × p 4 a 4 . . . x = p_1^{a_1} \times p_2^{a_2} \times p_3^{a_3} \times p_4^{a_4}... x=p1a1×p2a2×p3a3×p4a4...

对于 x x x的每一个约数 y y y y y y都能写成 y = p 1 b 1 × p 2 b 2 × p 3 b 3 × p 4 b 4 . . . ( 0 ≤ b 1 ≤ a 1 , 0 ≤ b 2 ≤ a 2 , 0 ≤ b 3 ≤ a 3 , 0 ≤ b 4 ≤ a 4 ) y = p_1^{b_1} \times p_2^{b_2} \times p_3^{b_3} \times p_4^{b_4}... \ (0 \leq b_1 \leq a_1,0 \leq b_2 \leq a_2, 0 \leq b_3\leq a_3,0 \leq b_4 \leq a_4) y=p1b1×p2b2×p3b3×p4b4... (0b1a1,0b2a2,0b3a3,0b4a4)

所以约数个数为$(a_1 + 1) \times (a_2 + 1) \times (a_3 + 1) \times (a_4 + 1) \times … $

约数之和

约数之和 s u m = ( p 1 0 + p 1 1 + . . . + p 1 a 1 ) × ( p 2 0 + p 2 1 + . . . + p 2 a 2 ) × ( p 3 0 + p 3 1 + . . . + p 3 a 3 ) × ( p 4 0 + p 4 1 + . . . + p 4 a 4 ) × . . . sum = (p_1^0 + p_1^1 + ... + p_1^{a_1}) \times (p_2^0 + p_2^1 + ... + p_2^{a_2}) \times (p_3^0 + p_3^1 + ... + p_3 ^ {a_3}) \times (p_4^0 + p_4^1 + ... + p_4^{a_4}) \times ... sum=(p10+p11+...+p1a1)×(p20+p21+...+p2a2)×(p30+p31+...+p3a3)×(p40+p41+...+p4a4)×...

由分配律将上述括号拆开可得: x 1 + x 2 + x 3 + . . . + x_1 + x_2 + x_3 + ... + x1+x2+x3+...+,其中每一项都是 x x x的约数

#include <bits/stdc++.h>
using namespace std;using LL = long long;const int mod = 1e9 + 7;int n;
map<int, int> cnt;int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> n;for (int i = 0; i < n; i ++) {int x;cin >> x;for (int j = 2; j <= x / j; j ++) {if (x % j != 0) continue;int t = 0;while (x % j == 0) {t ++;x /= j;}cnt[j] += t;}if (x > 1) cnt[x] ++;}   LL res = 1;for (auto& [u, v] : cnt) {LL t = 0;for (int j = 0; j <= v; j ++) {t = (t * u % mod + 1) % mod;}res = res * t % mod;}cout << res << endl;return 0;
}

相关文章:

【算法】简单数论

模运算 a m o d b a − ⌊ a / b ⌋ b a\ mod \ b a - \lfloor a / b \rfloor \times b a mod ba−⌊a/b⌋b n m o d p n \ mod\ p n mod p得到的结果的正负至于被除数 n n n有关 模运算的性质&#xff1a; ( a b ) m o d m ( ( a m o d m ) ( b m o d m ) ) m o d m …...

mybatis慢sql无所遁形

痛点问题&#xff1a; 扫描项目的慢sql 并提出优化建议 开源项目地址&#xff1a;gitee&#xff1a;mybatis-sql-optimizer-spring-boot-starter: 这个starter可以帮助开发者在开发阶段发现SQL性能问题&#xff0c;并提供优化建议&#xff0c;从而提高应用程序的数据库访问效…...

MCP有哪些比较好的资源?

MCP&#xff08;Model Context Protocol&#xff09;是一种由Anthropic公司推出的开放协议&#xff0c;旨在为AI模型与开发环境之间提供统一的上下文交互接口。目前&#xff0c;围绕MCP协议的资源非常丰富&#xff0c;以下是一些比较好的MCP资源推荐&#xff1a; Smithery Smit…...

Nginx功能及应用全解:从负载均衡到反向代理的全面剖析

Nginx作为一款开源的高性能HTTP服务器和反向代理服务器&#xff0c;凭借其高效的资源利用率和灵活的配置方式&#xff0c;已成为互联网领域中最受欢迎的Web服务器之一。无论是作为HTTP服务器、负载均衡器&#xff0c;还是作为反向代理和缓存服务器&#xff0c;Nginx的多种功能广…...

FreeRTOS/任务创建和删除的API函数

任务的创建和删除本质就是调用FreeRTOS的API函数 API函数描述xTaskCreate()动态方式创建任务xTaskCreateStatic()静态方式创建任务vTaskDelete()删除任务 动态创建任务 任务的任务控制块以及任务的占空间所需的内存&#xff0c;均由FreeRTOS从FreeRTOS管理的堆中分配 静态创建…...

【jvm】GC评估指标

目录 1. 说明2. 吞吐量&#xff08;Throughput&#xff09;3. 暂停时间&#xff08;Pause Time&#xff09;4. 内存占用&#xff08;Footprint&#xff09;5. 频率&#xff08;Frequency&#xff09;6. 对象晋升率&#xff08;Promotion Rate&#xff09;7. 内存分配速率&#…...

数据集(Dataset)和数据加载器(DataLoader)-pytroch学习3

pytorch网站学习 处理数据样本的代码往往会变得很乱、难以维护&#xff1b;理想情况下&#xff0c;我们希望把数据部分的代码和模型训练部分分开写&#xff0c;这样更容易阅读、也更好维护。 简单说&#xff1a;数据和模型最好“分工明确”&#xff0c;不要写在一起。 PyTor…...

影响RTOS实时性的因素有哪些?

目录 1、任务调度延迟 2、中断处理延迟 3、系统负载 4、任务优先级反转 5、时钟精度 6、内存管理 影响RTOS实时性的因素主要包括任务调度延迟、中断处理延迟、系统负载、任务优先级反转、时钟精度、内存管理等。 1、任务调度延迟 任务调度器是RTOS的核心&#xff0c;当…...

二叉树 递归

本篇基于b站灵茶山艾府的课上例题与课后作业。 104. 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&…...

ZLMediaKit 源码分析——[5] ZLToolKit 中EventPoller之延时任务处理

系列文章目录 第一篇 基于SRS 的 WebRTC 环境搭建 第二篇 基于SRS 实现RTSP接入与WebRTC播放 第三篇 centos下基于ZLMediaKit 的WebRTC 环境搭建 第四篇 WebRTC学习一&#xff1a;获取音频和视频设备 第五篇 WebRTC学习二&#xff1a;WebRTC音视频数据采集 第六篇 WebRTC学习三…...

【51单片机】2-6【I/O口】电动车简易防盗报警器实现

1.硬件 51最小系统继电器模块震动传感器模块433M无线收发模块 2.软件 #include "reg52.h" #include<intrins.h> #define J_ON 1 #define J_OFF 0sbit switcher P1^0;//继电器 sbit D0_ON P1^1;//433M无线收发模块 sbit D1_OFF P1^2; sbit vibrate …...

windows下载安装远程桌面工具RealVNC-Server教程(RealVNC_E4_6_1版带注册码)

文章目录 前言一、下载安装包二、安装步骤三、使用VNC-Viewer客户端远程连接&#xff0c;输入ip地址&#xff0c;密码完成连接 前言 在现代工作和生活中&#xff0c;远程控制软件为我们带来了极大的便利。RealVNC - Server 是一款功能强大的远程控制服务器软件&#xff0c;通过…...

C语言的操作系统

C语言的操作系统 引言 操作系统是一种系统软件&#xff0c;它管理计算机硬件和软件资源&#xff0c;并为计算机程序提供公共服务。在现代计算机科学中&#xff0c;操作系统是不可或缺的组成部分&#xff0c;而C语言则是实现高效操作系统的主要编程语言之一。本文将探讨C语言在…...

selectdb修改表副本

如果想修改doris&#xff08;也就是selectdb数据库&#xff09;表的副本数需要首先确定是否分区表&#xff0c;当前没有数据字典得知哪个表是分区的&#xff0c;只能先show partitions看结果 首先&#xff0c;副本数不应该大于be节点数 其次&#xff0c;修改期间最好不要跑业务…...

leetcode数组-有序数组的平方

题目 题目链接&#xff1a;https://leetcode.cn/problems/squares-of-a-sorted-array/ 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff…...

【python中级】关于Cython 的源代码pyx的说明

【python中级】关于Cython 的源代码pyx的说明 1.背景2.编译3.语法1.背景 Cython 是一个编程语言和工具链,用于将 Python 代码(或类 Python 的代码)编译成 C 语言,再进一步生成高性能的 Python 扩展模块(.so 或 .pyd 文件)。 在 Python 中,.pyx 文件是 Cython 的源代码文…...

开放最短路径优先 - OSPF【LSA详细】

目录 LSA的头部结构 LSA类型 LSA数据包 LSA的主要作用是传递路由信息。 LSA的头部结构 共占20个字节&#xff0c;不同类型的LSA头部字段部分都是相同的。 链路状态老化时间(Link-State Age) 2个字节。指示该条LSA的老化时间&#xff0c;即它存在了多长时间&#xff0c;单位…...

PyTorch:解锁AI新时代的钥匙

揭开PyTorch面纱 对于许多刚开始接触人工智能领域的朋友来说&#xff0c;PyTorch这个名字或许既熟悉又陌生。熟悉在于它频繁出现在各类技术论坛和新闻报道中&#xff1b;而陌生则源于对这样一个强大工具背后运作机制的好奇。简单来说&#xff0c;PyTorch是一个开源库&#xff…...

欧几里得算法求最大公约数、最小公倍数

这段代码就是不断用较小数和余数来更新 a 和 b&#xff0c;直到余数变为 0&#xff0c;最后返回的 a 就是最大公约数。 #include <iostream> using namespace std;//最大公约数 int gcd(int a, int b){//这个循环表示只要 b 不是 0&#xff0c;就继续进行。//因为当 b …...

QEMU源码全解析 —— 块设备虚拟化(14)

接前一篇文章:QEMU源码全解析 —— 块设备虚拟化(13) 本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 特此致谢! 上一回开始解析VirtioDeviceClass的realize函数virtio_blk_device_realize(),再来回…...

深入理解AOP:面向切面编程的核心概念与实战应用

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

3500 阶乘求和

3500 阶乘求和 ⭐️难度&#xff1a;中等 &#x1f31f;考点&#xff1a;2023、思维、省赛 &#x1f4d6; &#x1f4da; import java.util.Scanner;public class Main {public static void main(String[] args) {long sum 0;for(int i1;i<50;i) { // 之后取模都相等su…...

正则入门到精通

​ 一、正则表达式入门​ 正则表达式本质上是一串字符序列&#xff0c;用于定义一个文本模式。通过这个模式&#xff0c;我们可以指定要匹配的文本特征。例如&#xff0c;如果你想匹配一个以 “abc” 开头的字符串&#xff0c;正则表达式可以写作 “^abc”&#xff0c;其中 …...

Mysql 行级锁在什么样的情况下会升级为表级锁?

在 MySQL 中&#xff0c;行级锁通常由 InnoDB 存储引擎使用&#xff0c;因为它支持高并发和细粒度的锁定。通常情况下&#xff0c;InnoDB 在执行诸如 UPDATE、DELETE 或 SELECT FOR UPDATE 等操作时&#xff0c;会为被修改的数据行加锁&#xff08;行级锁&#xff09;。但是&am…...

docker部署kkfileview

拉取 KKFileView 镜像 docker pull keking/kkfileview或指定版本 docker pull keking/kkfileview:4.1.0运行 KKFileView 容器 docker run -d \--name kkfileview \-p 8012:8012 \--restart always \keking/kkfileview-d&#xff1a;后台运行 -p 8012:8012&#xff1a;将容器…...

优选算法的妙思之流:分治——快排专题

专栏&#xff1a;算法的魔法世界 个人主页&#xff1a;手握风云 目录 一、快速排序 二、例题讲解 2.1. 颜色分类 2.2. 排序数组 2.3. 数组中的第K个最大元素 2.4. 库存管理 III 一、快速排序 分治&#xff0c;简单理解为“分而治之”&#xff0c;将一个大问题划分为若干个…...

蓝桥杯嵌入式第15届真题-个人理解+解析

个人吐槽 #因为最近蓝桥杯快要开始了&#xff0c;我舍不得米白费了&#xff0c;所以就认真刷刷模拟题&#xff0c;但是我感觉真题会更好&#xff0c;所以就看了一下上届的真题。不过它是真的长&#xff0c;我看着就头晕&#xff0c;但是还是把几个模块认真分析了一下就还是很容…...

数据库系统概述 | 第二章课后习题答案

本文为数据库系统概论&#xff08;第五版&#xff09;【高等教育出版社】部分课后答案 如有错误&#xff0c;望指正 &#x1f47b; 习题 &#x1f47b; 答案...

深入解析CPU主要参数:选购与性能评估指南

引言 中央处理器&#xff08;CPU&#xff09;作为计算机的"大脑"&#xff0c;其性能直接决定了整机的运算能力和响应速度。无论是组装新电脑、升级旧系统还是选购笔记本电脑&#xff0c;理解CPU的关键参数都至关重要。本文将从技术角度全面解析CPU的各项主要参数&am…...

Lettuce与Springboot集成使用

一、Lettuce核心优势与Spring Boot集成背景 Lettuce特性 基于Netty的非阻塞I/O模型&#xff0c;支持同步/异步/响应式编程线程安全&#xff1a;共享单连接实现多线程并发操作&#xff0c;性能衰减低原生支持Redis集群、哨兵、主从架构&#xff0c;自动重连机制保障高可用Spring…...

【Kafka基础】ZooKeeper在Kafka中的核心作用:分布式系统中枢神经系统

在分布式系统的世界里&#xff0c;协调和管理多个节点间的状态是一项复杂而关键的任务。Apache Kafka作为一款高性能的分布式消息系统&#xff0c;其设计哲学是"专为单一目的而优化"——即高效处理消息流。为了实现这一目标&#xff0c;Kafka选择将集群协调管理的重任…...

专业的情商测评工具:EQ-i在线测评系统

专业的情商测评工具&#xff1a;EQ-i在线测评系统 基于巴昂情商量表的专业情商评估工具&#xff0c;帮助您更好地了解自己的情商水平。 什么是EQ-i&#xff1f; EQ-i&#xff08;Emotional Quotient Inventory&#xff09;是由Reuven Bar-On开发的情商量表&#xff0c;是国际上…...

Ubuntu安装Podman教程

1、先修改apt源为阿里源加速 备份原文件&#xff1a; sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 修改源配置&#xff1a; vim sources.list删除里面全部内容后&#xff0c;粘贴阿里源&#xff1a; deb http://mirrors.aliyun.com/ubuntu/ focal main re…...

7.训练篇5-毕设

使用23w张数据集-vit-打算30轮-内存崩了-改为batch_size 8 我准备用23w张数据集&#xff0c;太大了&#xff0c;这个用不了&#xff0c;所以 是否保留 .stack() 加载所有图片&#xff1f;情况建议✅ 小数据集&#xff08;<2w张&#xff0c;图像小&#xff09;想加快速度可…...

java数据结构-哈希表

什么是哈希表 最理想的搜索方法 , 即就是在查找某元素时 , 不进行任何比较的操作 , 一次直接查找到需要搜索的元素 , 可以达到这种要求的方法就是哈希表. 哈希表就是通过构造一种存储结构 , 通过某种函数使元素存储的位置与其关键码位形成一 一映射的关系 , 这样在查找元素的时…...

Linux错误(6)X64向量指令访问地址未对齐引起SIGSEGV

Linux错误(6)X64向量指令访问地址未对齐引起SIGSEGV Author: Once Day Date: 2025年4月4日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: Linux实…...

SpringBoot配置文件多环境开发

目录 一、设置临时属性的几种方法 1.启动jar包时&#xff0c;设置临时属性 ​2.idea配置临时属性 3.启动类中创建数组指定临时属性 二、多环境开发 1.包含模式 2.分组模式 三、配置文件的优先级 1.bootstrap 文件优先&#xff1a; 2.特定配置文件优先 3.文件夹位置优…...

解锁健康密码:拥抱活力养生生活

在追求高品质生活的今天&#xff0c;健康养生成为了人们关注的焦点。它不仅关乎当下的生活质量&#xff0c;更是对未来的有力投资。 合理的饮食是健康养生的基石。一日三餐&#xff0c;应遵循 “五谷为养&#xff0c;五果为助&#xff0c;五畜为益&#xff0c;五菜为充” 的原则…...

手动将ModelScope的模型下载到本地

一、ModelScope 介绍 ModelScope 官网地址&#xff1a; https://www.modelscope.cn/home 模型库地址&#xff1a;https://www.modelscope.cn/models 文档中心&#xff1a;https://www.modelscope.cn/docs/home ModelScope旨在打造下一代开源的模型即服务共享平台&#xff0c;为…...

【Git】“warning: LF will be replaced by CRLF”的解决办法

一、原因分析 不同操作系统的换行符标准不同&#xff1a; • Windows&#xff1a;使用 CRLF&#xff08;\r\n&#xff09;表示换行&#xff1b; • Linux/Mac&#xff1a;使用 LF&#xff08;\n&#xff09;表示换行 Git 检测到本地文件的换行符与仓库设置或目标平台不兼容时…...

Linux常用基础命令应用

目录 一、文件与目录管理 1. ​​基础导航与查看​​ 2. ​​文件操作核心命令​​ 二、文本处理与日志分析 1. ​​查看与过滤​​ 2. ​​组合命令与管道​​ 三、系统管理与权限控制 1. ​​进程与资源监控​​ 2. ​​权限与用户管理​​ 四、网络与远程操作 1. …...

C++11可变参数模板单例模式

单例模式 该示例代码采用C11标准&#xff0c;解决以下问题&#xff1a; 通过类模板函数实现不同类型单例&#xff1b;单例类构造函数支持不同的个数&#xff1b;消除代码重复 示例代码 .h文件如下&#xff1a; //C11Singleton.h文件 #pragma oncetemplate <typename T&…...

JVM 有哪些垃圾回收器

垃圾收集算法 标记-复制算法(Copying): 将可用内存按容量划分为两个区域,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面, 然后再把已使用过的内存空间一次清理掉。 标记-清除算法(Mark-Sweep): 算法分为“标记” 和“清除”两个…...

6. 链式结构(Chain)的奥秘:从LLMChain到RouterChain

引言&#xff1a;从“单兵作战”到“流水线革命” 2023年某电商平台客服系统因处理复杂咨询需手动串联多个AI模块&#xff0c;平均响应时间长达12秒。引入LangChain链式架构后&#xff0c;工单处理速度提升8倍&#xff0c;错误率下降45%。本文将深入解析链式编程范式&#xff…...

TypeScript语言的操作系统原理

TypeScript语言的操作系统原理 引言 操作系统是计算机系统中最重要的组成部分之一&#xff0c;它为应用程序提供了一个运行环境&#xff0c;并管理着计算机硬件和软件资源。随着编程语言的发展&#xff0c;特别是TypeScript的流行&#xff0c;许多开发者开始探索将这种强类型…...

时间序列入门

时间序列入门 第一章 时间序列概述1.1 时间序列简介1.1.1 时间序列定义1.1.2 时间序列分量1.1.3 时间序列分类 第二章 时间序列绘图2.1 单变量时序绘制2.2 多变量时序绘制 第一章 时间序列概述 1.1 时间序列简介 1.1.1 时间序列定义 在进行时间序列之前&#xff0c;需要学习…...

VirtualBox安装FnOS

1.下载FnOS镜像 下载网址&#xff1a; https://www.fnnas.com/2.创建虚拟机 虚拟机配置如图所示&#xff08;注意操作系统类型和网卡配置&#xff09; &#xff08;注意启动顺序&#xff09; 3.启动虚拟机 网卡类型选择桥接的Virtual Adapter 如果没有IP地址或者IP地址无法…...

函数栈帧的创建与销毁

函数栈帧的创建与销毁 函数栈帧简介认识寄存器解析函数栈帧的创建与销毁 函数栈帧简介 我们在编程的过程中经常会听见函数栈帧这个词汇&#xff0c;那到底什么是函数栈帧呢&#xff1f;接下来就为大家解答一下&#xff0c;我们都知道&#xff0c;一个函数的创建是需要去开辟空…...

Scheme语言的算法

Scheme语言的算法探索 引言 Scheme是一种以表达式为基础的编程语言&#xff0c;属于Lisp家族&#xff0c;因其简洁、灵活的语法而受到广泛关注。Scheme不仅适合教学&#xff0c;还被用于实际应用开发和研究。本文将深入探讨Scheme语言的算法&#xff0c;包括其基本特性、常用…...

[C++面试] new、delete相关面试点

一、入门 1、说说new与malloc的基本用途 int* p1 (int*)malloc(sizeof(int)); // C风格 int* p2 new int(10); // C风格&#xff0c;初始化为10 new 是 C 中的运算符&#xff0c;用于在堆上动态分配内存并调用对象的构造函数&#xff0c;会自动计算所需内存…...