原创 算法:線性篩質數

線性篩質數 功能 輸出從000到100000010000001000000的所有質數。 思路 首先000和111不是質數,從222開始逐個判斷是否爲質數。如果ttt爲質數,那麼對於任意正整數kkk,k×tk \times tk×t

原创 算法:逆元

逆元 定義 一個數aaa的倒數a−1a^{-1}a−1滿足a×a−1=1a \times a^{-1} = 1a×a−1=1。取aaa的逆元(amod  b)−1(a \mod b)^{-1

原创 算法:最大公約數

更新 調用GCD函數無需保證a > b,因爲當a < b時,GCD(a, b)返回GCD(b, a % b)即GCD(b, a)。 擴展 輸出分數p/q時,考慮0、負數和整數的特殊情況。 模板 #include "GCD.h"

原创 算法:模擬退火

之前覺得模擬退火算法是很高大上的存在,一直沒有去了解。然後上次數模校賽我們就用到了模擬退火算法,發現思路其實並不複雜。 模擬退火算法 模擬退火(Simulated Annealing),來源於熱力學上的退火現象。退火現象就是,將固

原创 【STMT】McCabe環路複雜度

文章目錄McCabe環路複雜度獨立路徑題目解答 McCabe環路複雜度 McCabe環路複雜度用於度量程序邏輯複雜性,計算程序的基本獨立路徑數目,即確保所有語句至少執行一次的最小測試數量。 McCabe環路複雜度需要先根據代碼畫出

原创 【STMT】Halstead複雜度

文章目錄Halstead複雜度題目解答 Halstead複雜度 Halstead複雜度度量是軟件複雜性的難度度量元,用於在程序產生或設計完成之後估算軟件的複雜性。Halstead複雜度度量基於程序中的操作符和操作數的數量,對操作符

原创 算法:數位DP

數位DP 問題 求區間[L,R][L, R][L,R]中滿足條件的數有多少個, 0≤L≤R0 \le L \le R0≤L≤R,該條件與數位有關,比如不包含數字444。 思路 考慮函數cal(n)cal(n)cal(n)表示區間[

原创 算法:大數加法

對於無法用int類型甚至long long int類型表示的大整數,可以用數組來存儲,那麼大數的運算就需要手動實現。 大數加法 功能 輸入兩個大數a和b,輸出a+b。 思路 從低位到高位逐位相加,並記錄進位,若最高位有進位,則位數

原创 Android Studio項目模板

Android Studio在新建項目時會根據模板生成初始文件,我們可以修改文件模板。 項目模板 模板所在目錄:Android Studio\plugins\android\lib\templates 下面我將修改兩個文件,分別是

原创 算法:矩陣快速冪

矩陣快速冪 功能 快速計算矩陣AAA的bbb次方冪 思路 將快速冪算法中的乘法運算替換爲矩陣乘法。若將bbb表示爲∑pi×2i\sum p_i \times 2_i∑pi​×2i​,則AbA^bAb可以表示爲∏(A2i)pi\pr

原创 算法:Sliding Window

上週末終於有空參加LeetCode的比賽了,而且這還是我第一次在比賽中完成所有的題目。雖然加上罰時超了比賽時間,但和以前相比也算是很大的進步。這次的題目比較簡單,前兩道就是暴力解法,第三道是動態規劃的簡單應用,最後一道比較有意思,

原创 算法:State Compression

上週參加了學校的acm比賽,只做出兩道水題,看了答案發現其中有兩道題用到了狀態壓縮,於是就去學習了一波。 狀態壓縮 狀態壓縮就是將題目的模型抽象成狀態的集合,如果每個對象只有兩個狀態且對象數量較少,可以用0和1分別代表這兩種狀態,

原创 算法:快速輸入輸出

快速輸入輸出 功能 對於大量數據進行快速輸入輸出。 思路 利用getchar()代替scanf()輸入整數,利用putchar()代替printf()輸出整數。 模板 非負整數輸入 /** * @param x: the in

原创 LeetCode Contest 74

日常鴿比賽,不過做完這周的題後感覺挺有意思的,記一下思路。 Valid Tic-Tac-Toe State 問題 給出一個井字棋的棋盤,求是否合理。 思路 首先,井字棋先手爲X,後手爲O,因此合理的棋盤中X數量比O數量多1或兩者相

原创 LeetCode Contest 71

今天的比賽又鴿掉了,晚上回來才把四道題做出來,感覺這次的題目難度適中,偏向數學題。 Minimum Distance Between BST Nodes 問題 求給出的二叉搜索樹中任意兩個元素最小的差值。 思路 由於二叉搜索樹的特