密码学的数学基础3-同余方程

一元高次同余方程

方程的性质

求解策略

若整数 d ∣ m , d \mid m, dm, 那么同余方程 f ( x ) ≡ 0 (   m o d   m ) f(x) \equiv 0(\bmod m) f(x)0(modm) 有解的必要条件为
f ( x ) ≡ 0 (   m o d   d ) f(x) \equiv 0(\bmod d) f(x)0(modd)
此性质可以判断方程是否无解.
例题:  求解同余方程  f ( x ) = 4 x 2 − 27 x − 9 ≡ 0 (   m o d   15 ) .  解 : 15  的素因子只有  3 , 5 ,  但只有  f ( 3 ) ≡ 0 (   m o d   3 ) ,  而  f ( 1 ) , f ( 2 ) , f ( 3 ) , f ( 4 ) f ( 5 ) ≢ 0 (   m o d   5 ) ,  从而此同余方程无解.  \begin{aligned} & \quad \text { 求解同余方程 } f(x)=4 x^{2}-27 x-9 \equiv 0(\bmod 15) .\\ &\text { 解 :} \quad 15 \text { 的素因子只有 } 3,5, \text { 但只有 } f(3) \equiv 0(\bmod 3), \text { 而 } f(1), f(2), f(3), f(4)\\ &f(5) \not \equiv 0(\bmod 5), \text { 从而此同余方程无解. } \end{aligned}  求解同余方程 f(x)=4x227x90(mod15).  :15 的素因子只有 3,5, 但只有 f(3)0(mod3),  f(1),f(2),f(3),f(4)f(5)0(mod5), 从而此同余方程无解

化简:

如果 f ( x ) = q ( x ) h ( x ) + r ( x ) f(x)=q(x) h(x)+r(x) f(x)=q(x)h(x)+r(x)
且同余方程 h ( x ) ≡ 0 (   m o d   m ) h(x) \equiv 0(\bmod m) h(x)0(modm) 为恒等同余式, 即方程的解数为 m , m, m, 则同余方程 (3.1) 与同余方程
r ( x ) ≡ 0 (   m o d   m ) r(x) \equiv 0(\bmod m) r(x)0(modm)
解与解数相同. 利用恒等同余式降低同余方程的次数,关键是找模 m 的恒等同余式. 如果 m 为素数 p p p, 利用 Fermat-Euler 定理,易知,
h ( x ) = x p − x ≡ 0 (   m o d   p ) h(x)=x^{p}-x \equiv 0(\bmod p) h(x)=xpx0(modp)
为恒等同余式.
例题:
求解同余方程
3 x 15 − x 13 − x 12 + x 11 − 3 x 5 + 6 x 3 − 2 x 2 + 2 x − 1 ≡ 0 (   m o d   11 ) 3 x^{15}-x^{13}-x^{12}+x^{11}-3 x^{5}+6 x^{3}-2 x^{2}+2 x-1 \equiv 0(\bmod 11) 3x15x13x12+x113x5+6x32x2+2x10(mod11)
\quad 利用恒等同余式 x 11 ≡ x (   m o d   11 ) , x^{11} \equiv x(\bmod 11), x11x(mod11), 由多项式除法得
3 x 15 − x 13 − x 12 + x 11 − 3 x 5 + 6 x 3 − 2 x 2 + 2 x − 1 = ( x 11 − x ) ( 3 x 4 − x 2 − x + 1 ) + 5 x 3 − 3 x 2 + 3 x − 1 (   m o d   11 ) \begin{aligned} & 3 x^{15}-x^{13}-x^{12}+x^{11}-3 x^{5}+6 x^{3}-2 x^{2}+2 x-1 \\ =&\left(x^{11}-x\right)\left(3 x^{4}-x^{2}-x+1\right)+5 x^{3}-3 x^{2}+3 x-1(\bmod 11) \end{aligned} =3x15x13x12+x113x5+6x32x2+2x1(x11x)(3x4x2x+1)+5x33x2+3x1(mod11)
所以原同余方程与同余方程 5 x 3 − 3 x 2 + 3 x − 1 ≡ 0 (   m o d   11 ) 5 x^{3}-3 x^{2}+3 x-1 \equiv 0(\bmod 11) 5x33x2+3x10(mod11) 同解,依次试0~10可知同余方程的解为 x ≡ 2 (   m o d   11 ) x \equiv 2(\bmod 11) x2(mod11)

一次同余方程

方程的性质与求解策略

标准形式: a x ≡ b ( m o d   m ) ax\equiv b(mod\ m) axb(mod m)

  • 若(a,m)=1,则有且只有一个解.
  • 方程有解的充要条件是 ( a , m ) ∣ b (a,m)|b (a,m)b,有解时,解数等于 ( a , m ) (a,m) (a,m)
  • x 0 x_{0} x0 是它的一个解,则它的(a, m) 个解是
    x ≡ x 0 + m ( a , m ) t (   m o d   m ) , t = 0 , 1 , ⋯   , ( a , m ) − 1 x \equiv x_{0}+\frac{m}{(a, m)} t(\bmod m), t=0,1, \cdots,(a, m)-1 xx0+(a,m)mt(modm),t=0,1,,(a,m)1

证明过程比较简单,略.
使用以上三个性质,我们可以进行一次同余方程的求解,求解过程利用拓展欧几里得算法为基础*(关于拓展欧几里得的算法在第一章写过)*,进行求解,完整代码如下:

#include<iostream>
using namespace std;
void ex_Eclid_recursive(int a, int b, int& gcd, int& x, int& y)
{
	if (b == 0)
		x = 1, y = 0,gcd = a;
	else
	{
		ex_Eclid_recursive(b, a % b, gcd, y, x);
		y -= x * (a / b);
	}

}

int main()
{
	cout << "求解一次同余方程ax=b(mod m)格式程序:" << endl;
	int a , b , m ,gcd=0,x=0,y=0,temp=0,count=0;//a,b,m值对应方程中的系数
	printf("请依次输入a,b,m:");
	scanf_s("%d%d%d", &a, &b, &m);
	cout << a << "x" << "=" << b << "(mod " << m << ") ";
	ex_Eclid_recursive(a, m, gcd, x, y);
	if (b % gcd != 0)
	{
		cout << "此方程无解!!" << endl;
	}
	else
	{
		cout <<" 共有" << gcd << "个解,分别是:";
		for (int i = 0; i < gcd; ++i)
		{
			temp = (((b / gcd) * (x % (m / gcd)) + i * (m / gcd)) % m + m) % m;
			cout << temp << '\t';
		}
	}
	return 0;
}

3.9 3.9 \quad 3.9 解同余方程 11 x ≡ 217 (   m o d   1732 ) . 11 x \equiv 217(\bmod 1732) . 11x217(mod1732).
代码求解,结果如下:

一次同余方程组,孙子定理

f i ( x ) f_{i}(x) fi(x) 是整系数多项式, 1 ⩽ i ⩽ k , \leqslant i \leqslant k, ik, 我们把含有变量 x x x 的一组同
余式
f i ( x ) ≡ 0 (   m o d   m i ) , 1 ⩽ i ⩽ k f_{i}(x) \equiv 0\left(\bmod m_{i}\right), \quad 1 \leqslant i \leqslant k fi(x)0(modmi),1ik
称为同余方程组。若整数 c 同时满足
f i ( c ) ≡ 0 (   m o d   m i ) , 1 ⩽ i ⩽ k f_{i}(c) \equiv 0\left(\bmod m_{i}\right), \quad 1 \leqslant i \leqslant k fi(c)0(modmi),1ik
则称 c 是同余方程组的解.

孙子定理

看到过一篇博客,写的很透彻,很难超越,就不写了:传送门:孙子定理
粘上自己的代码,就当学习笔记了
好难理解,立个flag,过几天再看…

一般同余方程

一般同余方程都可以化简到求解以下问题:
m = p 0 α 0 p 1 α 1 ⋯ p k − 1 α k − 1 , m=p_{0}^{\alpha_{0}} p_{1}^{\alpha_{1}} \cdots p_{k-1}^{\alpha_{k-1}}, m=p0α0p1α1pk1αk1,求形如下面方程的解
f ( x ) ≡ 0 (   m o d   p i α i ) f(x) \equiv 0\left(\bmod p_{i}^{\alpha_{i}}\right) f(x)0(modpiαi)
得到的解再根据中国剩余定理进行化简,得到最后结果.

求解方法

定理 3.15 3.15 \quad 3.15 f ( x ) ≡ 0 (   m o d   p α − 1 ) f(x) \equiv 0\left(\bmod p^{\alpha-1}\right) f(x)0(modpα1) 的解为 x ≡ c 1 , c 2 , ⋯   , c s (   m o d   p α − 1 ) , x \equiv c_{1}, c_{2}, \cdots, c_{s}\left(\bmod p^{\alpha-1}\right), xc1,c2,,cs(modpα1),
方程
x = C j f ( x ) ≡ 0 (   m o d   p α ) x=\mathcal{C}_{j} \quad f(x) \equiv 0\left(\bmod p^{\alpha}\right) x=Cjf(x)0(modpα)
的满足
x ≡ c j (   m o d   p α − 1 ) , c j ( 1 ⩽ j ⩽ s ) x \equiv c_{j}\left(\bmod p^{\alpha-1}\right), c_{j}(1 \leqslant j \leqslant s) xcj(modpα1),cj(1js)
的解有 x ≡ c j + p α − 1 y (   m o d   p α ) x \equiv c_{j}+p^{\alpha-1} y\left(\bmod p^{\alpha}\right) xcj+pα1y(modpα) 的形式,其中 y y y
f ′ ( c j ) y ≡ − f ( c j ) p 1 − α (   m o d   p ) f^{\prime}\left(c_{j}\right) y \equiv-f\left(c_{j}\right) p^{1-\alpha}(\bmod p) f(cj)yf(cj)p1α(modp)
的解.

一个例题

 解同余方程组  x 2 ≡ 3 (   m o d   1 1 3 ) . \text { 解同余方程组 } x^{2} \equiv 3\left(\bmod 11^{3}\right) .  解同余方程组 x23(mod113).
代码实现:

二次剩余

二次剩余的欧拉判别法

定理 3.20 (Euler 判别法) \quad 设素数 p > 2 , ( p , d ) = 1 , p>2,(p, d)=1, p>2,(p,d)=1, 那么 d d d 为模 p p p 的二次剩余的充要条件是
x 2 ≡ d ( m o d   p ) x^{2} \equiv d \quad(mod\ p) x2d(mod p)
d d d 为模 p p p 的二次剩余的充要条件是
d ( p − 1 ) / 2 ≡ 1 (   m o d   p ) d^{(p-1) / 2} \equiv1(\bmod p) d(p1)/21(modp)
d d d 为模 p p p 的二次非剩余的充要条件是
d ( p − 1 ) / 2 ≡ − 1 (   m o d   p ) d^{(p-1) / 2} \equiv-1(\bmod p) d(p1)/21(modp)

证明:

对于任意 d ∈ Z p ∗ , d \in \mathbb{Z}_{p}^{*}, dZp, 由 Euler 定理知 d p − 1 ≡ 1 (   m o d   p ) d^{p-1} \equiv 1(\bmod p) dp11(modp)所以 ( d ( p − 1 ) / 2 − 1 ) ( d ( p − 1 ) / 2 + 1 ) ≡ 0 (   m o d   p ) \left(d^{(p-1) / 2}-1\right)\left(d^{(p-1) / 2}+1\right) \equiv 0(\bmod p) (d(p1)/21)(d(p1)/2+1)0(modp)
从而有 d ( p − 1 ) / 2 ≡ 1 (   m o d   p ) d^{(p-1) / 2} \equiv 1(\bmod p) d(p1)/21(modp) d ( p − 1 ) / 2 ≡ − 1 (   m o d   p ) d^{(p-1) / 2} \equiv-1(\bmod p) d(p1)/21(modp) 成立.

下证d为模p的二次剩余的充要条件: d ( p − 1 ) / 2 ≡ 1 (   m o d   p ) d^{(p-1) / 2} \equiv1(\bmod p) d(p1)/21(modp)
必要性:如果d为模p的二次剩余,则存在 x 0 x_0 x0满足方程 x 0 2 ≡ d ( m o d   p ) x_0^2\equiv d(mod\ p) x02d(mod p)那么可以得到:
d ( p − 1 ) / 2 ≡ x 0 p − 1 ≡ 1 (   m o d   p ) d^{(p-1) / 2} \equiv x_{0}^{p-1} \equiv 1(\bmod p) d(p1)/2x0p11(modp)
充分性: 考虑一次同余方程 a x ≡ d (   m o d   p ) . a x \equiv d(\bmod p) . axd(modp). a a a p p p 的既约剩余系中某个 j j j 时,方程有且只有一个解 x j ( m o d p ) x_{j}(\mathrm{mod} p) xj(modp) ,若 d d d 不为模 p p p 的二次剩余,则 j ≠ x j j \neq x_{j} j=xj 可将 p p p 的既约剩余系按 j , x j j, x_{j} j,xj 作一对两两分完. 由 Wilson 定理: − 1 ≡ ( p − 1 ) ! ≡ ( − 1 ) ( p − 1 ) / 2 ( ( p − 1 2 ) ! ) 2 ≡ d ( p − 1 ) / 2 (   m o d   p ) -1 \equiv(p-1) ! \equiv(-1)^{(p-1) / 2}\left(\left(\frac{p-1}{2}\right) !\right)^{2} \equiv d^{(p-1) / 2}(\bmod p) 1(p1)!(1)(p1)/2((2p1)!)2d(p1)/2(modp)与假设矛盾.所以得证.

Legendre符号与Jacobi符号

Legendre符号定义:

定义 3.26 设素数 p > 2 , p>2, p>2,
( d p ) = { 0 ,  当  p ∣ d  时,  1 ,  当  d  为  p  的二次剩余时,  − 1 ,  当  d  为  p  的二次非剩余时.  \left(\frac{d}{p}\right)=\left\{\begin{array}{cl} 0, & \text { 当 } p \mid d \text { 时, } \\ 1, & \text { 当 } d \text { 为 } p \text { 的二次剩余时, } \\ -1, & \text { 当 } d \text { 为 } p \text { 的二次非剩余时. } \end{array}\right. (pd)=0,1,1,  pd   d  p 的二次剩余时  d  p 的二次非剩余时
( d p ) \left(\frac{d}{p}\right) (pd) 为模 p p p 的 Legendre 符号

Legendre符号性质:

  1. ( d p ) = d ( p − 1 ) / 2 (   m o d   p ) \left(\frac{d}{p}\right)=d^{(p-1) / 2}(\bmod p) (pd)=d(p1)/2(modp)
  2. ( d p ) = ( d + p p ) \left(\frac{d}{p}\right)=\left(\frac{d+p}{p}\right) (pd)=(pd+p)
  3. ( d c p ) = ( d p ) ( c p ) ; { x 2 ≡ d x 2 = 0 \left(\frac{d c}{p}\right)=\left(\frac{d}{p}\right)\left(\frac{c}{p}\right) ;\left\{\begin{array}{l}x^{2} \equiv d \\ x^{2}=0\end{array}\right. (pdc)=(pd)(pc);{x2dx2=0
  4. ( − 1 p ) = { 1 , p ≡ 1 (   m o d   4 ) − 1 , p ≡ 3 (   m o d   4 ) \left(\frac{-1}{p}\right)=\left\{\begin{aligned} 1, & p \equiv 1(\bmod 4) \\-1, & p \equiv 3(\bmod 4) \end{aligned}\right. (p1)={1,1,p1(mod4)p3(mod4)
  5. ( 2 p ) = ( − 1 ) ( p 2 − 1 ) / 8 \left(\frac{2}{p}\right)=(-1)^{\left(p^{2}-1\right) / 8} (p2)=(1)(p21)/8

定理 3.31 (Gauss 二次互反律) 设 p , q p, q p,q 均为奇素数, p ≠ q , p \neq q, p=q, 那么
$$
\left(\frac{q}{p}\right)\left(\frac{p}{q}\right)=(-1)^{(p-1) / 2 \cdot(q-1) / 2}

利用以上性质,可以得到计算Legendre符号代码:

int Legrend(int a, int p)
{
    if (a == 1)
        return 1;
    if (p % a == 0)
        return 0;
    if (a % 2 == 0)
        return Legrend(a / 2, p)* pow(-1, (pow(p, 2) - 1) / 8);//利用性质5
    return Legrend(p % a, a)* pow(-1, (a - 1) * (p - 1) / 4);//二次互反律
}

例题: 计算 ( 157 751 ) \left(\frac{157}{751}\right) (751157)
解: \quad 由 Gauss 二次互反律得
( 157 751 ) = ( 751 157 ) \left(\frac{157}{751}\right)=\left(\frac{751}{157}\right) (751157)=(157751)
根据 Legendre 符号的性质得
( 751 157 ) = ( − 34 157 ) = ( − 1 157 ) ( 2 157 ) ( 17 157 ) \left(\frac{751}{157}\right)=\left(\frac{-34}{157}\right)=\left(\frac{-1}{157}\right)\left(\frac{2}{157}\right)\left(\frac{17}{157}\right) (157751)=(15734)=(1571)(1572)(15717)
计算得-1
Jacobi符号类似,不太常用到,用到再整理

习题

题目

  1. T 1 ( m ; f ) T_{1}(m ; f) T1(m;f) 表示同余方程 f ( x ) ≡ 0 (   m o d   m ) f(x) \equiv 0(\bmod m) f(x)0(modm) 满足条件 ( x , m ) = 1 (x, m)=1 (x,m)=1 的解数. \quad 证 明: ( m 1 , m 2 ) = 1 \left(m_{1}, m_{2}\right)=1 (m1,m2)=1 时, T 1 ( m 1 m 2 ; f ) = T 1 ( m 1 ; f ) T 2 ( m 2 ; f ) T_{1}\left(m_{1} m_{2} ; f\right)=T_{1}\left(m_{1} ; f\right) T_{2}\left(m_{2} ; f\right) T1(m1m2;f)=T1(m1;f)T2(m2;f)
  2. p ≡ 1 (   m o d   4 ) p \equiv 1(\bmod 4) p1(mod4) 是奇素数. 证明:
    ( 1 ) 1 , 2 , ⋯   , ( p − 1 ) / 2 (1) 1,2, \cdots,(p-1) / 2 (1)1,2,,(p1)/2 中模 p p p 的二次剩余与二次非剩余的个数均为 ( p − 1 ) / 4 (p-1) / 4 (p1)/4 个;
  3. 求以 19 为其二次剩余的所有奇素数 .
  4. 素数 p > 2 , p>2, p>2, 证明: x 4 ≡ − 4 (   m o d   p ) 2 x^{4} \equiv-4(\bmod p)_{2} x44(modp)2 有解的充要条件是 ( p ≡ 1 ) (   m o d   4 ) (p \equiv 1)(\bmod 4) (p1)(mod4)

参考思路

  1. ( m 1 , m 2 ) = 1 (m_1,m_2)=1 (m1,m2)=1时,要证解数关系: f ( x ) ≡ 0 (   m o d   m ) ⇔ f ( x ) ≡ 0 (   m o d   m 1 ) , f ( x ) ≡ 0 (   m o d   m 2 ) f(x) \equiv 0(\bmod m) \Leftrightarrow f(x) \equiv 0\left(\bmod m_{1}\right), f(x) \equiv 0\left(\bmod m_{2}\right) f(x)0(modm)f(x)0(modm1),f(x)0(modm2)
    ⇒ \Rightarrow : ( m 1 , m 2 ) = 1 (m_1,m_2)=1 (m1,m2)=1,所以如果 x ≡ a (   m o d   m ) x \equiv a(\bmod m) xa(modm) 是一个解,那么同时也是右边的解(根据同余的性质)
    ⇐ \Leftarrow :如果 x ≡ b (   m o d   m 1 ) , x ≡ c (   m o d   m 2 ) x \equiv b\left(\bmod m_{1}\right), x \equiv c\left(\bmod m_{2}\right) xb(modm1),xc(modm2) 是其中一组解,根据中国剩余定理, 存在唯一解 x ≡ a (   m o d   m ) x \equiv a(\bmod m) xa(modm)
    得证
  2. 利用 p ≡ 1 (   m o d   4 ) p \equiv 1(\bmod 4) p1(mod4) ,根据Lengendre符号性质,-1为p的二次剩余,根据这一性质进行证明:
    (1). 在 Z p ∗ , \mathbb{Z}_{p}^{*}, Zp, ∣ Q R p ∣ = ∣ Q N R p ∣ = p − 1 2 . \left|Q R_{p}\right|=\left|Q N R_{p}\right|=\frac{p-1}{2} . QRp=QNRp=2p1. 1 ≤ d ≤ p − 1 1 \leq d \leq p-1 1dp1
    由于 ( − d p ) = ( − 1 p ) ( d p ) = ( d p ) , \left(\frac{-d}{p}\right)=\left(\frac{-1}{p}\right)\left(\frac{d}{p}\right)=\left(\frac{d}{p}\right), (pd)=(p1)(pd)=(pd), 因此 d d d − d -d d 要么全部是二次剩余,要么全部而二次非剩余. 发现 if 1 ≤ d ≤ p − 1 2 , 1 \leq d \leq \frac{p-1}{2}, 1d2p1, then p + 1 2 ≤ − d ≤ p , \frac{p+1}{2} \leq-d \leq p, 2p+1dp, 因此 Q R p Q R_{p} QRp and Q N R p Q N R_{p} QNRp 均等分布在 [ 1 , p − 1 2 ] \left[1, \frac{p-1}{2}\right] [1,2p1] [ p + 1 2 , p − 1 ] \left[\frac{p+1}{2}, p-1\right] [2p+1,p1] .得证
  3. (与课本例题解法相同) ( 19 p ) = ( p 19 ) ( − 1 ) ( p − 1 ) / 2 \left(\frac{19}{p}\right)=\left(\frac{p}{19}\right)(-1)^{(p-1) / 2} (p19)=(19p)(1)(p1)/2
    ( p 19 ) = { 1 , p ≡ 1 , − 2 , − 3 , 4 , 5 , 6 , 7 , − 8 , 9 (   m o d   19 ) − 1 , p ≡ − 1 , 2 , 3 , − 4 , − 5 , − 6 , − 7 , 8 , − 9 (   m o d   19 ) ( − 1 ) ( p − 1 ) / 2 = { 1 , p ≡ 1 (   m o d   4 ) − 1 , p ≡ 3 (   m o d   4 ) \begin{aligned} \left(\frac{p}{19}\right)=\left\{\begin{aligned} 1, p \equiv 1,-2,-3,4,5,6,7,-8,9 &(\bmod 19) \\ -1, p \equiv-1,2,3,-4,-5,-6,-7,8,-9 &(\bmod 19) \end{aligned}\right.\\ (-1)^{(p-1) / 2}=\left\{\begin{aligned} 1, p \equiv 1 &(\bmod 4) \\ -1, p \equiv 3 &(\bmod 4) \end{aligned}\right. \end{aligned} (19p)={1,p1,2,3,4,5,6,7,8,91,p1,2,3,4,5,6,7,8,9(mod19)(mod19)(1)(p1)/2={1,p11,p3(mod4)(mod4)
    { x ≡ a 1 (   m o d   4 ) x ≡ a 2 (   m o d   19 ) \left\{\begin{aligned} x & \equiv a_{1} \quad(\bmod 4) \\ x \equiv a_{2} &(\bmod 19) \end{aligned}\right. {xxa2a1(mod4)(mod19)
    根据中国剩余定理,求解得到
    p ≡ ± 1 , ± 3 , ± 5 , ± 9 , ± 15 , ± 17 , ± 25 , ± 27 , ± 31 (   m o d   76 ) , p \equiv \pm 1,\pm 3,\pm 5,\pm 9,\pm 15,\pm 17,\pm 25,\pm 27, \pm 31 \quad(\bmod 76), p±1,±3,±5,±9,±15,±17,±25,±27,±31(mod76),
  4.  "必要性" If  a 4 ≡ − 4 (   m o d   p ) ,  then  ( a 2 ) 2 ≡ − 4 (   m o d   p )  . Thus  1 = ( − 4 p ) = ( − 1 p ) ( 4 p ) ,  which implies  ( − 1 p ) = 1 ,  thus  p ≡ 1 (   m o d   4 ) \begin{aligned} &\text { "必要性" If } a^{4} \equiv-4(\bmod p), \text { then }\left(a^{2}\right)^{2} \equiv-4(\bmod p) \text { . Thus }\\ &1=\left(\frac{-4}{p}\right)=\left(\frac{-1}{p}\right)\left(\frac{4}{p}\right), \text { which implies }\left(\frac{-1}{p}\right)=1, \text { thus } p \equiv 1(\bmod 4) \end{aligned}  "必要性" If a44(modp), then (a2)24(modp) . Thus 1=(p4)=(p1)(p4), which implies (p1)=1, thus p1(mod4)
    充分性:使用Wilson定理可证.
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值