日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数学部分简单总结

發(fā)布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数学部分简单总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

總的感受:

難...... 數(shù)學這種東西真的很考驗一個人,我是典型的被題虐的。所以這里只包括了一些簡單數(shù)學知識。

簡單數(shù)論:

一、質數(shù)

1、單個質數(shù)的判定:① 試除法 ② Miller-Rabin

Miller-Rabin的基本思想:隨機+費馬小定理+二次探測定理。

[有興趣的戳這里(在文章中間有提到)]

Miller-Rabin :

IL int Miller_Rabin(int x) {if (x<2) return 0;if (x==2||x==3||x==5||x==7) return 1;RG int i,j,k=x-1,cnt=0,now;while (!(k&1)) k>>=1,++cnt;//先把所有的2給提出來,然后在一個一個乘上去,這樣比直接做快for (i=1;i<=4;++i) {if (Pow(prm[i],x-1,x)!=1) return 0; //費馬小定理now=Pow(prm[i],k,x);if (now==1||now==x-1) continue;now=now*now%x;for (j=1;j<=cnt;++j,now=now*now%x)if (now==x-1) break;if (j>cnt) return 0;}return 1; }/jike

2、質數(shù)的篩法 :① 歐拉篩 ② 線性篩

線性篩基本思想:確定每個數(shù)產生的唯一方式

只給當前數(shù)乘上一個質因子,且使得這個質因子是生成的合數(shù)的最小質因子,這樣保證了合數(shù)質因子從大到小累積

線性篩 :

RG int n,m,cnt=0,i,j;n=gi(),m=gi();for (i=2;i<=n;++i) {if (!minpr[i]) // 數(shù)i的最小質因子pr[i]=1,minpr[i]=i,prime[++cnt]=i;for (j=1;j<=cnt&&prime[j]<=minpr[i]&&prime[j]*i<=n;++j)minpr[i*prime[j]]=prime[j];}

3、質因數(shù)分解 :① 試除法 ② Pollard-Rho-大數(shù)質因數(shù)分解

Pollard-Rho的講解戳上面那個鏈接。

關于Pollard-Rho的小優(yōu)化:

① 每次算出一個差x后,不單單只看是否x|N,而是看是否gcd(x,N)>1。

② 在①的基礎上,不需要每次都算gcd,而可以每127(其他數(shù)應該也行)個x累乘起來,和N算一次gcd。

 對Miller-Rabin的優(yōu)化:對于質數(shù)選取選擇:2,3,7,61,24251據(jù)說可以保證在2的14次方,只有46856248255981判不掉。

 這樣可以篩出N的每一個因子,然后用Miller-Rabin判斷是否為質數(shù)即可。

IL int Pollard_rho(int x,int c) {RG int i,j,Las,now=0,res,gcd;for (i=2;;i<<=1) {for (j=1,Las=now,res=1;j<=i;++j) {now=(qm(now,now,x)+c)%x,res=qm(res,abc(now-Las),x);if (!(i%137)) {gcd=getgcd(x,res);if (gcd>1) return gcd;} if (now==Las) return x;}gcd=getgcd(x,res);if (gcd>1) return gcd;} }IL void Find(int x,int c) {if (x<2||x<=ans) return;if (Miller_Rabin(x)) {ans=max(ans,x);return;} RG int p=x;while (p==x) p=Pollard_rho(x,c--);while (x%p==0) x/=p;Find(p,c),Find(x,c); }

題目:

Luogu Pollard-Rho 模板題


二、約數(shù)

1、算術基本定理及其推論:
\[ N=\prod^{cnt}_{i=1}Pi^{ci}算術基本定理的推論(N的正約數(shù)和): \]
算術基本定理的推論(N的正約數(shù)和):
\[ \prod^{cnt}_{i=1}({\sum^{ci}_{j=0}(Pi)^{j}}) \]
2、N的正約數(shù)集合的求法:試除法

3、1~N每個數(shù)的正約數(shù)集合:倍數(shù)法

4、最大公約數(shù):歐幾里得算法

5、互質與歐拉函數(shù):

\[ \phi(n)=n*\prod_{質數(shù)p|n}{\frac{p-1}{p}} \]
故歐拉函數(shù)的計算可在質因數(shù)分解的過程中求得。

歐拉函數(shù)的性質:

① 對于任意n>1 ,1~n中與n互質的數(shù)的和為
\[ n*\phi(n)/2 \]
② 若a,b互質,則有:
\[ \phi(ab)=\phi(a)*\phi(b) \]
 實際上,一個函數(shù)f,當a,b互質時,存在
\[ f(ab)=f(a)*f(b) \]
那么f為積性函數(shù)。本文不做深究。

題目:

① 反素數(shù) Sol

② 余數(shù)之和 Sol

③ Hankson的趣味題 Sol


三、同余

1、費馬小定理:若P是質數(shù),那么對于任意整數(shù)a,有:
\[ a^P\equiv a\mod P \]
2、歐拉定理:若正整數(shù)a,n互質,則:
\[ a^{\phi(n)}\equiv1\mod n \]
3、歐拉定理的推論:若正整數(shù)a,n互質,則對于任意整數(shù)b,有:
\[ a^b\equiv a^{b\mod{\phi(n)}}\mod n \]
4、裴蜀定理:對于任意整數(shù)a,b,存在一對整數(shù)x,y,滿足:
\[ a*x+b*y=\gcd{(a,b)} \]
  擴展歐幾里得算法即基于上述定理。

  推廣:對于更加一般的方程
\[ a*x+b*y=c \]
? 它有解,當且僅當:
\[ \gcd{(a,b)}\mid c \]
5、乘法逆元的求法(記為inv):

① 費馬小定理(若模數(shù)P為質數(shù))。

② 擴展歐幾里得算法。

③ 線性遞推逆元:
\[ inv[i]=(P-P/i)*inv[P\ mod\ i] \]
6、線性同余方程:CRT & ExCRT

? 有興趣的戳這里

7、高次同余方程:BSGS & ExBSGS

有興趣的戳這里

題目:

① The Luckiest Number Sol

② Sumdiv Sol

③ ExCRT模板

④ BSGS模板

⑤ ExBSGS模板


線性代數(shù) & 組合數(shù)學:

四、矩陣乘法

主要用于加速遞推。

需要特別留心的是關于類似floyd的可行矩陣的遞推,可能會有點抽象。

直接上題吧:

① 石頭游戲 Sol

② 數(shù)學作業(yè) Sol

③ 花園 Sol


五、高斯消元與線性空間

1、Gauss_Jordan消元法(無回帶操作)

IL void Gauss_Jordan() {RG int i,j,k,l;for(i=1;i<=n;++i) {for(j=cnt+1,l=0;j<=n;++j)if(fabs(a[j][i])>eps) {l=j;break;}if(!l) continue;for(j=i,++cnt;j<=n+1;++j) swap(a[cnt][j],a[l][j]);for(j=i+1;j<=n+1;++j) a[cnt][j]/=a[cnt][i];a[cnt][i]=1.0;for(j=1;j<=n;++j) {if(j==cnt) continue;RG DB res=a[j][i]/a[cnt][i];for(k=i;k<=n+1;++k) a[j][k]-=res*a[cnt][k];} }for(i=cnt+1;i<=n;++i)if(fabs(a[i][n+1])>eps) {puts("-1");exit(0);}if(cnt<n) {puts("0");exit(0);} } // 無解輸出-1 無窮解輸出0

2、線性基

? 有興趣的戳這里

題目:

① 球形空間產生器

② 開關問題

③ 線性基模板

④ 裝備購買 Sol

⑤ XOR Sol


六、組合計數(shù)

1、加法原理 & 乘法原理

? 不多說。。

2、排列 & 組合:

? 從n個不同元素中選m個元素排成一列,產生的不同排列數(shù)量為:
\[ P^m_n=\frac{n!}{(n-m)!} \]
? 從n個不同元素中選m個元素組成一個集合,產生的不同集合數(shù)量為:
\[ C^m_n=\frac{n!}{(n-m)!*m!} \]
3、二項式定理:
\[ (a+b)^y=\sum_{i=0}^ya^i*b^{n-i}*C^i_n \]
4、多重集的排列 & 組合:

? 設多重集S={c1·a1,c2·a2……cN·aN},S的全排列個數(shù)為:
\[ P=\frac{(\sum^N_{i=1}{n_i})!}{\prod^N_{i=1}(n_i)!} \]
? 設多重集S={c1·a1,c2·a2……cN·aN},則從中選出r個元素組成一個多重集(此處僅考慮r<=ni的情況)的數(shù)量為:
\[ C^{N-1}_{N+r-1} \]
? 對于r更加一般的情況,需要用到容斥,此處不作深究。

5、Lucas定理:

? 若P為質數(shù),則對于任意整數(shù)1≤m≤n,有:
\[ C^m_n\equiv C^{m\ mod\ P}_{n\ mod\ P}\ (mod\ P) \]

? 實現(xiàn)的話遞歸即可。

? 推廣:Exlucas,可以處理P為任意數(shù)的情況。

? 有興趣的戳這里

題目:

① Counting Swaps

② 古代豬文


轉載于:https://www.cnblogs.com/Bhllx/p/10652038.html

總結

以上是生活随笔為你收集整理的数学部分简单总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。