0x30 數學知識

2021-09-26 03:18:17 字數 3869 閱讀 1343

0x31 質數

例題 (非書上)p3383 【模板】線性篩素數

保證每個數最多被篩一次(最多兩次),由該數的最小質因數來篩。

#include

using namespace std;

const

int maxn=

10000005

;int n,m,tot;

int prim[maxn]

,chk[maxn]

;int

main()

}int x;

for(

int i=

1;i<=m;i++

)return0;

}

例題 poj2689 prime distance

l、r太大,不能直接找素數,所以首先用線性素數篩找出乙個較大範圍內的素數,再用它利乘積的方式去判斷區間[l,r]內哪些數是它的倍數並打上標記。最後遍歷[l,r]區間即可。

因為太蒻了不會寫標頭檔案,只能在網上找份真·萬能標頭檔案 了。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

typedef

long

long ll;

const

int inf=

0x3f3f3f3f

;const

int maxn=

1e6+5;

ll cnt,z,p,la,mr,sum,dis,clo,d1,d2,c1,c2;

ll l,r,ok[maxn]

,prim[maxn]

,vis[maxn]

;void

chk(

int i)

if(i-la>dis)}}

void

check

(int x)

if(x-la>dis)

}int

main()

}while

(scanf

("%lld%lld"

,&l,

&r)!=

eof)

} la=sum=dis=0;

clo=inf;

for(

long

long i=l;i<=r;

++i)if(

!dis)

printf

("there are no adjacent primes.\n");

else

printf

("%lld,%lld are closest, %lld,%lld are most distant.\n"

,c1,c2,d1,d2);}

return0;

}

例題 acwing197. 階乘分解

#include

using namespace std;

const

int maxn=

1e6+5;

int n,p,di,k;

bool ok[maxn]

;int prim[maxn]

,d[maxn]

,v[maxn]

;void

prime()

}}intmain()

printf

("%d %d\n"

,prim[i]

,sum);}

return0;

}

0x32 約數

例題 bzoj1053 [haoi2007] 反素數ant

引理:1.設g(x)為x約數個數。 m為n最大反素數,則∀xm,滿足g(x)<=g(m)

2. 1到n任何數的不同質因子不超過10個,且質因子指數中和不超過30.

3. m的質因子單調須為連續的指數,且每個質因數的指數都不大於前乙個數。

(源自書上,證明自查)

#include

using namespace std;

typedef

long

long ll;

const

int inf=

0x3f3f3f3f

;ll n,ans,sa;

ll prim[50]

=;ll po

(ll x,ll y)

return cnt;

}void

dfs(ll num,ll la,ll tot,ll sum,ll al)

if(al==sa)

for(

int i=

0;i<=la;i++)}

intmain()

例題 bzoj1257: [cqoi2007]餘數之和

推導可知 k mod i = k - ⌊ k / i ⌋ * i,則原式=k - ⌊ k / 1 ⌋ * 1+k - ⌊ k / 2 ⌋ * 2……+k - ⌊ k / n ⌋ * n=kn-∑n

i=1⌊ k / i ⌋ * i(sigma打不出來,湊合看吧)

分段求⌊ k / i ⌋ * i,如樣例:

i = 1 2 3 4 5 6 7 8 9 10

⌊ k / i ⌋ = 5 2 1 1 1 0 0 0 0 0

​ 將⌊ k / i ⌋相等的i分為一組,直接用等差數列公式求⌊ k / i ⌋(i),在已知區間左端點l情況下求出右端點r,使⌊ k / l ⌋=⌊ k / r ⌋,而當⌊ k / l ⌋=k/i時,i最大,若i再增加,⌊ k / i ⌋的值就會減小,故此時i即為右端點r。下一區間的l即為當前區間的r+1。

注意右端點不能超過n。當⌊ k / i ⌋已為0時,i再增加⌊ k / i ⌋值不變,故此時右端點直接為n。

#include

using namespace std;

typedef

long

long ll;

ll n,k,l,r,t,ans;

intmain()

printf

("%lld"

,k*n-ans)

;return0;

}

數學太難,挖坑待填…… 數學,我又回來了

0x34 矩陣乘法

數學知識 x (範數 norm)

通俗的理解,向量範數就是在這個向量空間中向量的大小 一般向量範數常使用l p範數 其通用公式為 注意,上述公式中xi外應該有絕對值符號。聰明的你應該已經發現了 l0範數表示向量中非零元素個數 l 1範數表示向量元素絕對值之和,l1範數有很多的名字,例如我們熟悉的曼哈頓距離 最小絕對誤差等。使用l1範...

python數學知識 數學知識回顧01

常見函式 常見函式 y c 一次函式 y ax b 二次函式 y ax 2 bx c 冪函式y x a 指數函式 y a x,a的取值範圍為 a 0 a 1 對數函式 y loga x a的取值範圍為 a 0 a 1 導數乙個函式在某一點的導數描述了這個函式在這一點附近的變化率,也可以認為是函式在某...

數學知識集合

1.尤拉函式 p 為n的質因子 varphi n n times pi 1 frac 1 n中與n互質的數的和 frac times varphi n 如果a,b互質,那麼 varphi ab varphi a times varphi b 與n所有約數互質的個數的和為n sum varphi d ...