機試筆記7 數學問題

2022-09-19 01:12:11 字數 1400 閱讀 1626

1.同模餘定理

定義所謂的同餘,顧名思義,就是許多的數被乙個數d去除,有相同的餘數。d數學上的稱謂為模。如a=6,b=1,d=5,則我們說a和b是模d同餘的。因為他們都有相同的餘數1。

應用(a+b)%c=(a%c+b%c)%c;--1

(a-b)%c=(a%c-b%c)%c;--2

(a*b)%c=(a%c*b%c)%c;--3

例題s(n)=n^5  求s(n)除以3的餘數

這裡的問題是用long long,n的5次冪會越界,所以可以用上面的公式3來進行運算。

2.最大公約數

int gcd(int a,int

b)

int gdc(int a,int

b) }

return

temp;

}

例題1給出n個正整數,任取兩個數分別作為分子和分母組成最簡真分數,程式設計求共有幾個這樣的組合。

就是求兩個數的最大公約數為1的個數

例題2分數化簡,同除以兩個數的最大公約數就可以了

3.最小公倍數(lcm)

lcm(x, y) = x * y / gcd(x, y)

4.斐波那契數列

f(n) = f(n-1) + f(n-2)

5.素數判定

只需要從2遍歷搭配sqrt(n)就行了

6.全排列

對字串進行全排列

方法1.使用next_permutation(start,end)

#includeusing

namespace

std;

intmain()next_permutation(s,s+len);

return0;

}

2.遞迴

終止條件:if(begin>=end) 輸出

permutation(arr,begin,end)=permutation(arr,begin+1,end)即乙個陣列的全排列等於它的所有子排列

#include using

namespace

std;

void swap(int &a,int &b)

void permutation(int a,int s,int

e) cout

<}

else

}}int

main()

permutation(source,

0,count);

return0;

}

演算法筆記 數學問題

原題鏈結 原理 最大公約數 遞迴 歐幾里得演算法 最小公倍數 得到a,b的最大公約數d 最小公倍數 a d b include include intgcb int a,int b 求最大公約數 intmain printf d n d return0 include include include...

2018 6 18 數學問題

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

2018 6 18 數學問題

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 提供兩個因子,相較於上乙個...