2018 6 18 數學問題

2021-08-20 19:47:31 字數 1134 閱讀 1139

// 2^4 3^8

// 2   3^3

對分母n!和分子 a進行因子分解後,找到其對應的冪指數相除結果最小的即為最後結果

對n!分解素因數

計算n!中將有幾個p因子ans

計算n/p,有n/p個整數可以向n!提供乙個p因子  ans+=(n/p)

計算n/(p*p),有n/(p*p)個整數可以向n!提供兩個因子,相較於上乙個的基礎上,又多提供了乙個。這裡 ans+=(n/p)+(n/(p*p))

依次累加p的更高次的倍數能夠提供的素因子數,每次累加n/(p^k),知道n/(p^k)邊為0,表示沒有整數可以提供更多 的p因子,關於p的分解結束

注意在主函式中,要先init(),進行素數表的初始化
#define _crt_secure_no_deprecate

//給定n,a 求最大的k,使得n!可以被a^k整除但不能被a^(k+1)整除

//a能整除b,則表示b/a為乙個整數。n!/a^k

//a存在素因數p,b也一定存在,且對應的冪指數一定不小於在a中的冪指數

//轉化為:對a和n!分解素因數。然後檢查a中的每乙個素因數,確定n!中對應的是它的多少倍(最小的)

#includeint prime[1010];

int primesize;

bool mark[1010];

void init() }}

//素因子對應冪指數

int cnt1[1010];

int cnt2[1010];

int main()

} //對a分解素因子

int ans = 123123123;

for (int i = 0; i < primesize; i++)

if (cnt2[i] == 0)

continue; //作為分母,不影響整除

if (cnt1[i] / cnt2[i] < ans)

ans = cnt1[i] / cnt2[i];

} printf("%d\n", ans);

} return 0;

}

2018 6 18 數學問題

define crt secure no deprecate 求正整數n的質因數的個數。120 2 2 2 3 5 所以最後輸出時5 10 9 n至多只存在乙個大於sqrt n 的素因數 這裡只需要篩選到100000就可以 通過素數表,不斷試除,最後求出各個冪指數的和 include 素數表找到10...

基礎數學問題

要找出唯一單著的那個數,可以用異或的方式 我們已知 a a 0 對於存在偶數個的數字,遲早會互相抵消,奇數個的數字也會兩兩抵消,只剩下最後乙個答案。1 模擬 1.將數字轉換為2進製字串s1 itoa 2.補前導零,字串s2先存低位,再存高位 相當於交換 3.轉換為10進製輸出 atoi 注意 2 3...

數學問題 調整概率

調整 0,x 區間上的數出現的概率 題目 假設函式math.random 等概率隨機返回乙個在 0,1 範圍上的 數,那麼我們知道,在 0,x 區間上的數出現的概率為x 0 x 1 給定乙個大於0的整數k,並且可以使用 math.random 函式,請實現乙個函式依然返回在 0,1 範圍上 的數,但...