算法之数论应用篇二

  • 最大公约数
    • 线性筛
    • Hankson的趣味题
  • 欧拉函数
    • 前言
    • 可见的点(数学知识+欧拉函数)
    • 最大公约数(可见的点扩展)
  • 同余
    • 取模的性质
      • 定义
      • 基本性质
      • 运算规则
      • 重要定理
    • 重要定理
      • 费马小定理
      • 欧拉定理
      • 扩展欧几里得算法
      • 乘法逆元
      • 线性同余方程式
    • 同余方程(数学知识+线性同余方程式)
    • 青蛙的约会(同余+数学方程式)
    • 曹冲养猪(中国剩余定理)

最大公约数

题目转送门

线性筛

void get_primes(int n ){for(int i = 2 ;  i <= n ; ++i){if(!st[i])primes[cnt ++] = i;for(int j = 0 ; primes[j]  <= n / i; ++j){st[i*primes[j]] = true;if(i % primes[j] == 0)break;}}
}

利用了每个合数必有一个最小素因子。每个合数仅被它的最小素因子筛去正好一次。所以为线性时间。
代码中体现在:
if(i%prime[j]==0)break;
prime数组 中的素数是递增的,当 i 能整除 prime[j],那么 i*prime[j+1] 这个合数肯定被 prime[j] 乘以某个数筛掉。
因为i中含有prime[j], prime[j] 比 prime[j+1] 小。接下去的素数同理。所以不用筛下去了。
在满足i%prme[j]==0这个条件之前以及第一次满足改条件时,pr[j]必定是pr[j]*i的最小因子.

Hankson的趣味题

题目转送门

解题思路
这题是求满足条件的x分个数。条件是 gcd(a,x) = b , lcm(x,c) = d;
由lcm(c,x) = d ,我们知道x 一定为d的约数。那么我们就可以从d的约数中找符合条件的x。不过因为在找约数的时间复杂度是d\sqrt{d}d​的,我们需要进行一些优化。我们知道一个数的余数可以有其分解质因数的质因子组合而成。因此我们就可以将d先进行分解质因数,之后通过dfs进行组合形成约数。因为2∗109内的数含有的不同质因子的个数不会超过10个(上一篇提到),因此速度会得到很大的优化。

代码:

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int N = 2000 , M = 50010 ;
typedef long long LL;
int n ;
int primes[M] , cnt;
bool st[M];struct Factor{int p , s ;
}factor[M];
int fcnt ,dcnt;
int divtor[M];void get_primes(int n ){for(int i = 2 ;  i <= n ; ++i){if(!st[i])primes[cnt ++] = i;for(int j = 0 ; primes[j]  <= n / i; ++j){st[i*primes[j]] = true;if(i % primes[j] == 0)break;}}
}int gcd(int a , int b){if(b == 0 )return a;else return gcd(b , a % b);
}void divite(int n ){fcnt = 0;for(int i = 0 ; i < cnt &&  primes[i] <= n / primes[i] ; ++i){int p = primes[i];if(n % p == 0){int s = 0;while(n % p == 0) n /= p , s ++;factor[++fcnt] = {p,s};}}if(n > 1)factor[++fcnt] = { n ,1};
}void dfs(int u , int p){if( u > fcnt){divtor[dcnt++] = p;return ;}for(int i = 0 ; i <= factor[u].s ; ++i){dfs(u+1 , p);p *= factor[u].p;}
}int main(){get_primes(M - 1);cin>>n;while(n--){int a ,b , c ,d;cin>>a>>b>>c>>d;divite(d);dcnt = 0;dfs(1,1);int res = 0;for(int i = 0 ; i < dcnt ; ++i){int x = divtor[i];if(gcd(a,x) == b && (LL)c * x / gcd(x,c) == d) res++;}cout<<res<<endl;}return 0;
}

欧拉函数

前言

欧拉函数是一个函数嘛?不它不是的!对于一个数N的欧拉函数我们常记作ψ(N)\psi(N)ψ(N),它的含义是从1~N中与N互质的个数。

其中
ψ(N)=N∗Π质数p∣Np−1p\psi(N) = N * \Pi_{质数p|N}\frac{p-1}{p}ψ(N)=N∗Π质数p∣N​pp−1​

可见的点(数学知识+欧拉函数)

题目转送门

解题思路
分析题目容易发现,除了(1,0),(0,1)和(1,1)这三个钉子外,一个钉子(x,y)能被看到,当且仅当1≤x,y≤N.x+y并且ged(x,y)=1。
在1≤x,y≤N,x≠y1≤x,y≤N,x \ne y1≤x,y≤N,x​=y中能看到的钉子关于过(0,0)和(N,N)的直线对称。我们可以考虑其中的一半,即1≤x<y≤N。换言之,对于每个2≤y≤N,我们需要统计有多少个x满足1≤x<y并且gcd(x,y)=1。这样的x的数量恰好就是(y)。
综上所述,本题的答案就是 3+2∗Σi=2Nψ(i)。3+2* \Sigma_{i=2}^N\psi(i)。3+2∗Σi=2N​ψ(i)。我们要做的事情就是求出2~N中每个数的欧拉函数.

代码:

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1010;
int n ;
int primes[N];
int phi[N];void init(int n){for(int i = 1 ; i <= n ; ++i)phi[i] = i;for(int i = 2 ; i <= n;  ++i){if(phi[i] == i)for(int j = 1 ; j <= n / i ; ++j)phi[j*i] = phi[j*i]/i * (i-1);}
}int main(){init(N-1);int T ;cin>>T;for(int i = 1; i <= T ; ++i){cin>>n;int res = 0;for(int i = 2 ; i <= n ; ++i) res += phi[i];cout<<i<<" "<<n<<" "<< res * 2 + 3 <<endl;}return 0;
}

最大公约数(可见的点扩展)

题目转送门

解题思路
之所以说是上一题的扩展是有原因的,对于这个题目是求 1 - N ,中 满足 gcd(x,y)=p,p是质数gcd(x,y) = p ,p是质数gcd(x,y)=p,p是质数的点对数。两个数x,y之间的最大公约数为p,那么其除以p之后也就是gcd(x/p,y/p)=1gcd(x/p,y/p) = 1gcd(x/p,y/p)=1因为p是它们的最大公约数。而知就转换成了上一题。有一些出入的就是这里是从 1 开始计数的,同时对于每一个p我们加上 1 ~ N/p 范围内对于上一题的解。

解题步骤

  1. 线性筛,得到2-N的所有质数,同时得到2-N的欧拉函数。
  2. 之后将2-N的欧拉函数建立前缀和。
  3. 枚举每一个质数,加上 sum(n/p) * 2 + 1

代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
const int N = 1E7 + 10;
int n ;
int primes[N] ,phi[N];
int st[N] ,  cnt;
LL sum[N];void init(int n ){for(int i = 2 ; i <= n ; ++i){if(st[i] == 0){primes[cnt++] = i;phi[i] = i-1;}for(int j = 0;  primes[j] <= n / i ; ++j){st[primes[j] * i] = 1;if( i % primes[j] == 0){phi[primes[j] * i] = phi[i] * primes[j];break;}phi[primes[j] * i] = phi[i] * ( primes[j] - 1) ;}}for(int i = 1 ; i <= n ; ++i)sum[i] = sum[i-1] + phi[i];
}int main(){cin>>n;init(n);LL ans = 0;for(int i = 0 ; i < cnt ; ++i)ans += sum[n/primes[i]]*2 + 1 ;cout<<ans <<endl;return 0;
}

同余

取模的性质

在介绍有关同余的一系列性质之前有必要列举一下取模的一些性质

定义

给定一个正整数p,任意一个整数n,一定存在等式 :
n = kp + r ;
其中 k、r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商,r 为 n 除以 p 的余数。
对于正整数 p 和整数 a,b,定义如下运算:取模运算:a % p(或a mod p),表示a除以p的余数。

说明:

  1. 同余式:正整数a,b对p取模,它们的余数相同,记做 或者a ≡ b (mod p)。
  2. n % p 得到结果的正负由被除数n决定,与p无关。例如:7%4 = 3, -7%4 = -3, 7%-4 = 3, -7%-4 = -3

基本性质

  1. 若p|(a-b),则a≡b (% p)。例如 11 ≡ 4 (% 7), 18 ≡ 4(% 7)
  2. 取模运算是等价关系。
    自反性:(a % p)=(a % p)意味a≡a (% p)
    对称性:a≡b (% p)等价于b≡a (% p)
    传递性:若a≡b (% p)且b≡c (% p) ,则a≡c (% p)

运算规则

模运算与基本四则运算有些相似,但是除法例外。其规则如下:

  1. (a + b) % p = (a % p + b % p) % p
  2. (a - b) % p = (a % p - b % p) % p
  3. (a * b) % p = (a % p * b % p) % p
  4. a ^ b % p = ((a % p)^b) % p

因此对于除法取模,我们就会利用乘法逆元来解决。下面我们会提到如何求乘法逆元。

重要定理

  1. 若a≡b (% p),则对于任意的c,都有(a + c) ≡ (b + c) (%p);因为由 a = k1p + x , b = k2p + x , 那么同时加上一个数c后,对p的余数都是 (x + c) % p 是一样的
  2. 若a≡b (% p),则对于任意的c,都有(a * c) ≡ (b * c) (%p);与上面同理
  3. 若a≡b (% p),c≡d (% p),则 (a + c) ≡ (b + d) (%p),(a - c) ≡ (b - d) (%p),
    (a * c) ≡ (b * d) (%p),(a / c) ≡ (b / d) (%p); 我们证明加法,其余同理。由前提我们令
    a=k1∗p+x,b=k2∗p+x,c=k3∗p+y,d=k4∗p+ya = k_1*p + x , b = k_2*p+x , c = k_3*p+y , d = k_4*p+ya=k1​∗p+x,b=k2​∗p+x,c=k3​∗p+y,d=k4​∗p+y那么(a+c)=(k1+k3)∗p+x+y(b+d)=(k2+k4)∗p+x+y(a+c) = (k_1+k_3)*p+x+y \quad (b+d) =(k_2+k_4)*p+x+y(a+c)=(k1​+k3​)∗p+x+y(b+d)=(k2​+k4​)∗p+x+y它们对p取模的结果都是(x+y)(x+y)%p(x+y)

重要定理

费马小定理

费马小定理:a(p−1)≡1(modp)a^(p-1) ≡ 1(mod p)a(p−1)≡1(modp)
前提:p为质数,且a,p互质

在证明之前我们先证明两个引理

  1. 如果p,c互质,并且a∗c≡b∗c(modp),则a≡b(modp)如果p,c互质,并且a*c≡b*c(mod p) , 则 a ≡b (mod p)如果p,c互质,并且a∗c≡b∗c(modp),则a≡b(modp) :对于同余我们就可以写成。 a·c≡b·c(mod m)可得ac–bc≡0(mod m)可得(a-b)·c≡0(mod m)。因为(m,c)=1即m,c互质,c可以约去,a– b≡0(mod m)可得a≡b(mod m)。
  2. 设m是一个整数且m>1,b是一个整数且(m,b)=1。如果a[1],a[2],a[3],a[4],…a[m]是模m的一个完全剩余系,则b⋅a[1],b⋅a[2],b⋅a[3],b⋅a[4],…b⋅a[m]也构成模m的一个完全剩余系。设m是一个整数且m>1,b是一个整数且(m,b)=1。如果a[1],a[2],a[3],a[4],…a[m]是模m的一个完全剩余系,则b·a[1],b·a[2],b·a[3],b·a[4],…b·a[m]也构成模m的一个完全剩余系。设m是一个整数且m>1,b是一个整数且(m,b)=1。如果a[1],a[2],a[3],a[4],…a[m]是模m的一个完全剩余系,则b⋅a[1],b⋅a[2],b⋅a[3],b⋅a[4],…b⋅a[m]也构成模m的一个完全剩余系。 证明: 假设不是完全剩余系,那么至少有两个同余,即b∗a[i]≡b∗a[j](modm)b*a[i]≡b*a[j](mod m)b∗a[i]≡b∗a[j](modm)有定理一有 a[i]≡a[j](modm)a[i]≡a[j](mod m)a[i]≡a[j](modm),因为这两个是完全剩余系中不同的,因此不可能成了。证毕
  3. 费马小定理证明:0,1,2,3,4…p-1是p的完全剩余系
    ∵a,p互质
    ∴a,2a,3a,4a…(p-1)a也是mod p的完全剩余系
    ∴123…(p-1)a ≡ a2a3a…(p-1)*a (mod p)
    ∴ (p-1)! ≡ (p-1)!*a^(p-1) (mod p)
    两边同时约去(p-1)!
    a^(p-1) ≡ 1 (mod p)
  4. 推广: 若p是质数,则对于任意的整数a,有ap≡a(modp)若p是质数,则对于任意的整数a,有a^p≡ a(mod p)若p是质数,则对于任意的整数a,有ap≡a(modp) ,证明: p∣a(ap−1−1),若a,p互质,那么由定理知成立,如果不互质,那么p与a同时除以gcd(p,a)的结果会p/gcd)会与a互质,则成立p|a(a^{p-1}-1),若a,p互质,那么由定理知成立,如果不互质,那么p与a同时除以gcd(p,a)的结果会p/gcd)会与a互质,则成立p∣a(ap−1−1),若a,p互质,那么由定理知成立,如果不互质,那么p与a同时除以gcd(p,a)的结果会p/gcd)会与a互质,则成立

欧拉定理

对于费马定理,我们知道 p(质数)的欧拉函数就是 p - 1
因此可以成
若正整数a,n互质,则aψ(n)≡1(mod)n若正整数a,n互质,则a^{\psi(n)}≡1 (mod)n若正整数a,n互质,则aψ(n)≡1(mod)n

推论
若正整数a,n互质,则对于任意正整数b,有ab≡abmodψ(n)(mod)n若正整数a,n互质,则对于任意正整数b,有a^{b}≡a^{b mod \psi(n)}(mod)n若正整数a,n互质,则对于任意正整数b,有ab≡abmodψ(n)(mod)n

而这个就是快速幂取模可行的一个依据

扩展欧几里得算法

定理
对于任意整数a,b,存在一对整数x和y,满足ax+by=gcd(a,b)对于任意整数a,b,存在一对整数x和y,满足ax + by = gcd(a,b)对于任意整数a,b,存在一对整数x和y,满足ax+by=gcd(a,b)
证明
在欧几里得算法的最后一步,即b=0时,显然有一对整数x=1,y=0,使得a∗1+0∗0=gcd(a,0)。a*1+0*0=gcd(a,0)。a∗1+0∗0=gcd(a,0)。
若b>0,则gcd(a,b)=gcd(b,amodb)。gcd(a,b)=gcd(b,a mod b)。gcd(a,b)=gcd(b,amodb)。假设存在一对整数x,y,满足b∗x+(amodb)∗y=gcd(b,amodb)b*x+(amodb)*y=gcd(b,a mod b)b∗x+(amodb)∗y=gcd(b,amodb),因为bx+(amodb)y=bx+(a−⌊a/b⌋b])∗y=ay+b(x−[a/b]y)bx+(amodb)y=bx+(a-\lfloor a/b\rfloor b])*y=ay+b(x-[a/b]y)bx+(amodb)y=bx+(a−⌊a/b⌋b])∗y=ay+b(x−[a/b]y),所以令 x′=y,y′=x−∣a/b∣y,x′=y,y′=x−∣a/b∣y,x′=y,y′=x−∣a/b∣y, 就得到了 。ax′+by′=gcd(a,b)。 对欧几里得算法的递归过程应用数学归纳法,可知Bézout定理成立。
证毕。

代码:

int exgcd(int a , int b ,int & x ,int & y){if(b == 0){x = 1  , y = 0;return a;}int d = exgcd(b , a % b , y ,x);y -=  a / b * x;

对于更为一般的方程ax+by=c,它有解当且仅当d|c。(d = gcd(a,b))我们可以先求出ax+by=d的一组特解xo,yo,然后令xo,yo同时乘上c/d,就得到了ax+by=c的一组特解(c/d)∗xo,(c/d)∗yo。ax+by=d的一组特解x_o,y_o,然后令x_o,y_o同时乘上c/d,就得到了ax+by=c的一组特解(c/d)* x_o,(c/d)* y_o。ax+by=d的一组特解xo​,yo​,然后令xo​,yo​同时乘上c/d,就得到了ax+by=c的一组特解(c/d)∗xo​,(c/d)∗yo​。
事实上,方程ax+by=c的通解可以表示为:
x=cd∗x0+(kbd)y=cd∗y0−(k∗ad)(k∈Z)x=\frac {c}{d}*x_0+(k\frac {b}{d}) \quad y=\frac {c}{d}*y_0 -(k*\frac {a}{d}) (k∈Z)x=dc​∗x0​+(kdb​)y=dc​∗y0​−(k∗da​)(k∈Z)
其中k取遍整数集合.

乘法逆元

定理
若b,p互质,并且b∣a,则存在一个整数x,使得ab≡a∗x(modp)若b,p互质,并且b|a,则存在一个整数x,使得\frac{a}{b} ≡ a*x (mod p)若b,p互质,并且b∣a,则存在一个整数x,使得ba​≡a∗x(modp),称x为b的模p的乘法逆元,记作b−1(modp)称x为b的模p的乘法逆元,记作b^{-1}(mod p)称x为b的模p的乘法逆元,记作b−1(modp)

因为ab≡a∗b−1≡ab∗b∗b−1\frac{a}{b} ≡ a*b^{-1}≡\frac{a}{b} *b*b^{-1}ba​≡a∗b−1≡ba​∗b∗b−1,所以b∗b−1≡1(modp)b*b^{-1}≡1(mod p)b∗b−1≡1(modp)如果m是质数,且b < p ,那么由费马小定理有 ,bp−2b^{p-2}bp−2是b的乘法逆元。
如果只是b,p互质 , 我们也可以通过求同余方程式 b∗x≡1(modp)b*x≡1(mod p)b∗x≡1(modp)

现在有了乘法逆元对于除法的取模运算我们也可以适当的进行加速运算了。

线性同余方程式

定义:给定整数a,b,m,求一个整数x满足a∗x≡b(modm)a*x ≡b(modm)a∗x≡b(modm),或者给出无解。因为未知数的指数为1,所以我们称之为一次同余方程,也称线性同余方程。

a∗x≡b(modm)a*x ≡b(modm)a∗x≡b(modm)等价于a∗x−b是ma*x-b是ma∗x−b是m的倍数,不妨设为−y-y−y倍。于是,该方程可以改写为a∗x+m∗y=ba*x+m*y=ba∗x+m∗y=b。

根据Bézout定理及其证明过程,线性同余方程有解当且仅当gcd(a,m)∣b线性同余方程有解当且仅当gcd(a,m)|b线性同余方程有解当且仅当gcd(a,m)∣b。而这也证明了上面情况乘法逆元的存在性。b∗x≡1(modp)b*x≡1(mod p)b∗x≡1(modp)。可以写成bx+py=1bx + py = 1bx+py=1因为b,p互质,所以 gcd(b,p)=1gcd(b,p) = 1gcd(b,p)=1那么解一定存在。
在有解时,先用欧几里得算法求出一组整数x0,y0,满足a∗x0+m∗y0=gdd(a,m)x_0,y_0,满足 a∗x_0+m∗y_0= gdd(a,m)x0​,y0​,满足a∗x0​+m∗y0​=gdd(a,m)。然后x=x0∗b/gcd(a,m)x=x_0*b/gcd(a,m)x=x0​∗b/gcd(a,m)就是原线性同余方程的一个解。
方程的通解则是所有模m/gcd(a,m)与x同余的整数。

同余方程(数学知识+线性同余方程式)

题目转送门
解题思路

题目要求的是满足条件的最小正整数。而通解的形式是x0+kbx_0 + kbx0​+kb表示的是所有模b与x0x_0x0​的余数相同的最小正整数。 循环来求就是

for(int i = 1 ; i <= b ; ++i)if(i % b == (x % b +b ) % b){cout<<i<<endl;break;}

不过我们发现其实我们是不用循环的,这个(x % b +b ) % b)就是所求解。

代码:

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;int a , b ,x ,y;int exgcd(int a , int b ,int & x ,int & y){if(b == 0){x = 1  , y = 0;return a;}int d = exgcd(b , a % b , y ,x);y -=  a / b * x;return d;
}int main(){cin>>a>>b;exgcd(a,b,x,y);cout<< (x % b + b)%b<<endl;return 0;
}

青蛙的约会(同余+数学方程式)

题目转送门

解题思路

那么它们相遇的时候有方程式
a+mx≡b+nx(modL)a + mx \equiv b+nx \quad(mod L)a+mx≡b+nx(modL)等价于(a−b)+(m−n)x是L的倍数(a-b)+(m-n)x是L的倍数(a−b)+(m−n)x是L的倍数我们假设倍数是-y倍,那么有(m−n)x+Ly=b−a(m-n)x + Ly = b - a(m−n)x+Ly=b−a这就是一次同余方程。那么有解当且仅当 gcd(L,m−n)∣(a−b)gcd(L,m-n) | (a-b)gcd(L,m−n)∣(a−b)。如果有解我么用扩展欧几里得算法解出x0x_0x0​后x=x0∗(b/gcd(L,m−n))x = x_0 * (b/gcd(L,m-n))x=x0​∗(b/gcd(L,m−n))就是方程的一个特解。通解就是X=x+Ld,d=gcd(L,m−n)X = x + \frac{L}{d} ,d = gcd(L,m-n)X=x+dL​,d=gcd(L,m−n),至于最小的正整数解就类似上一题所说为(xmodLd+Ld)modLd(x \quad mod \quad \frac{L}{d} + \frac{L}{d})mod \frac{L}{d}(xmoddL​+dL​)moddL​

代码:

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;typedef long long LL;
LL n , m , a ,b ,L , x , y;LL exgcd(LL a , LL b ,LL & x , LL & y){if(b == 0 ){x = 1 , y = 0;return a;}LL d = exgcd(b , a%b , y , x);y -= a/b  * x;return d;
}int main(){cin>>a>>b>>m>>n>>L;LL d = exgcd(m - n , L ,x ,y);if((b - a) % d)cout<<"Impossible\n";else{x *= (b - a) / d  ;LL t = abs(L/d);cout<< ( x % t + t) % t <<endl;}return 0;
}

曹冲养猪(中国剩余定理)

题目转送门

解题思路

这题是一个板子题,对于中国剩余定理是

中国剩余定理是构造了一组解,使得满足条件。

代码:

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 11;
int n ;
int a[N] , b[N];int exgcd(LL a , LL b ,LL & x , LL & y){if(!b){x = 1  , y = 0;return a;}LL d = exgcd(b , a % b , y ,x);y -= a/b * x;return d;
}int main(){cin>>n;LL m = 1;for(int i = 1 ; i <= n ; ++i){cin>>a[i]>>b[i];m *= a[i];}LL ans = 0;for(int i = 1 ; i <= n ; ++i){LL x , y ;LL M = m / a[i];exgcd( M, a[i] , x , y);ans += b[i] * M * x; }cout<<(ans % m+ m ) % m<<endl;return 0;
}

算法之数论应用篇(二)相关推荐

  1. 【数据结构与算法】程序内功篇四--栈

    程序内功篇四--栈 一.栈的原理 二.顺序栈的实现 1.顺序栈原理 2.栈的创建 3.顺序栈进栈 4.顺序栈出栈 5.顺序栈删除 6.清空栈与是否清空栈 三.链表栈的实现 1.栈的单链表实现 2.创建 ...

  2. 算法之基础数论应用篇(一)

    基础数论应用篇 子集和 题目描述 筛质数 筛质数模板 欧拉筛 线性筛 哥德巴赫猜想 夏洛克和他的女朋友 二次筛法 分解质因数 试除法分解质因数 分解阶乘质因子 快速幂 模板 快速幂 快速乘法 序列的第 ...

  3. 算法设计分析之------ 递推与递归篇二

    递推与递归篇二 递归 Secret Cow Code S 黑白棋子的移动 递推(动态规划) 覆盖墙壁 递归 Secret Cow Code S 题目链接:Secret Cow Code S 解题思路 ...

  4. 菜鸟学算法一基础知识篇

    菜鸟学算法<一>知识准备篇 刚刚上任,急着给兄弟们一点见面礼,嘿嘿 前言:论坛上有关算法分析的文章不少,也不少精品 但对于刚学CARACK来说,只是叹为观止 原因如下: 1.论坛高手如云, ...

  5. 在java中重写方法应遵循规则的包括_Java面试题集合篇二

    Java面试题之Java集合篇二1.遍历一个List有哪些不同的方式? List<String> strList = new ArrayList<>(); //使用for-ea ...

  6. 【word2vec】篇二:基于Hierarchical Softmax的 CBOW 模型和 Skip-gram 模型

    文章目录 CBOW 模型 基本结构 目标函数 梯度计算 Skip-gram 模型 基本结构 梯度计算 优缺点分析 系列文章: [word2vec]篇一:理解词向量.CBOW与Skip-Gram等知识 ...

  7. 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)

    涤生_Woo 2017年11月11日阅读 15544 关注 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机 ...

  8. c语言线性分类回归库 台湾,最全的线性回归算法库总结—— scikit-learn篇

    原标题:最全的线性回归算法库总结-- scikit-learn篇 本文建议收藏后食用更加美味 scikit-learn对于线性回归提供了比较多的类库,这些类库都可以用来做线性回归分析,本文就对这些类库 ...

  9. 国内外物联网平台初探(篇二:阿里云物联网套件)

    国内外物联网平台初探(篇二:阿里云物联网套件) ------ [导读]------ 物联网智库将于本周开始,在每周五下午的第二篇文章推送由马智先生研究撰写的系列文章--<国内外物联网平台初探&g ...

最新文章

  1. 2017视频监控趋势的一些思考
  2. class.forname找不到类_15个“专科专业”就业找工作容易,关注热度也挺高,报考比较靠谱...
  3. LINE: Large-scale Information Network Embedding
  4. WOLF ISP CCIE 方向优惠最后10天,价格低至13800!!
  5. gradle构建脚本、依赖、插件管理、生命周期进阶教程
  6. 统计Apache或nginx日志里访问次数最多的前十个IP
  7. PHP算法按数组某一字段进行排序
  8. java htmlelement_Java Element.outerHtml方法代码示例
  9. 基于浏览器的m3u8和flv的播放器
  10. C4D玻璃材质调节方法
  11. TCL通讯上海产品创新中心职位推荐
  12. 关于表的创建(第二次作业)
  13. python流程控制工具
  14. 快速将多个Excel表格合并为1个,你会吗?
  15. 正确使用pageX、pageY、offsetLeft、offsetTop
  16. java中final,static,this,supper关键字的异同
  17. 利用matlab与eeglab对EEG信号(脑电)进行处理分段与保存
  18. iOS开发——深拷贝与浅拷贝详解
  19. IFR报告显示过去五年全球工业机器人销量翻番
  20. MySQL查询年龄最大学生信息_查询xsda表中年龄最大的学生的出生日期

热门文章

  1. a标签用ajax请求传参,Django中如何实现传参的Ajax请求
  2. linux vino vnc,CentOS 远程桌面(vnc,vino)
  3. 计算机哪里看到32位还是64位,如何看电脑是32位还是64位?
  4. 【植物大战僵尸2】算法 笔记
  5. python 神经网络中隐藏层的作用是什么?
  6. IText实现url转pdf, 解决中文字体问题
  7. 4.Spring Cloud Alibaba教程:Nacos配置管理
  8. android图库文件夹乱,防止文件夹包含在Android图库中 | MOS86
  9. vivadohlsdsp_Vivado HLS学习笔记
  10. 遍历Map的几种方式以及性能小结