|
|
|
前言 N.Wirth給出了程序設計的一個重要公式,程序=算法+數(shù)據(jù)結構。 作為一個程序員或者程序設計愛好者來說,不應該只把程序設計作為一門技術,更應該看成是一種藝術。其實,算法本身也是一門藝術,數(shù)據(jù)結構本身也是一門藝術。程序也好,算法也好,數(shù)據(jù)結構也好,其中都蘊涵了很多的數(shù)學,而數(shù)學更是一門藝術。如果把數(shù)學與程序設計完美地結合在一起,則是藝術的巔峰! 從某種意義上來說,計算機源于數(shù)學。而作為計算機科學核心技術的程序設計,與數(shù)學之間的關系更是密不可分,可以這樣說,數(shù)學是計算機程序設計的靈魂。利用數(shù)學方面的知識、數(shù)學分析的方法以及數(shù)學解題的技巧,可以使得程序設計變得輕松、美觀、高效,而且往往能反映出問題的本質。 在ACM國際大學生程序設計競賽(ACMICPC)和全國青少年信息學奧林匹克競賽(NOI)系列活動中,越來越多地出現(xiàn)了數(shù)學的影子,也用到了越來越多數(shù)學方面的知識,對選手的數(shù)學修養(yǎng)要求越來越高。本書的目的就在于給廣大編程愛好者和信息學參賽者,介紹和總結一些程序設計中常用的數(shù)學知識和數(shù)學方法,希望能起到拋磚引玉的作用。 本書由全國青少年信息學奧林匹克競賽金牌指導教師、常州市第一中學林厚從老師主編。2008年,筆者編寫出版了《數(shù)學與程序設計》一書,深受讀者歡迎。相比而言,《信息學奧賽之數(shù)學一本通》知識內容更加豐富、體系結構更加完整、例題習題更加新穎,更加突出實戰(zhàn)性和應用性。在編寫過程中,吸收了很多OIer的靈感和智慧,參考了部分國家集訓隊員和教練員的論文,包括朱全明、賈志鵬、陳瑜希、董宏華、金策、鬲融、唐文斌、余林韻、朱澤園、俞華程、Matrix67的博客、ACdreamers的博客、pi9nc的博客。福州市第三中學黃志剛老師和吳鈺晗、閆書弈兩位同學,以及常州市第一中學吳睿海、孔瑞陽等同學為本書的編寫做了大量調試和校對工作。全國青少年信息學奧林匹克競賽(NOI)科學委員會主席、清華大學計算機科學與技術系王宏老師,在百忙之中審定了全書。在此,一并表示感謝!由于水平有限,書中難免存在不當之處,懇請諒解,也歡迎廣大讀者批評指正,不勝感激! 書中所有例題的參考程序均采用DevC++實現(xiàn)。如果需要本書中所有題目的測試數(shù)據(jù)和PASCAL標程,請發(fā)郵件與我聯(lián)系(hc.lin@163.com)。 筆者 目錄 第1章數(shù)論1 1.1整除2 1.2同余6 1.3最大公約數(shù)9 1.31輾轉相除法9 1.32二進制算法9 1.33最小公倍數(shù)10 1.34擴展歐幾里得算法10 1.35求解線性同余方程11 1.4逆元*本書中加“*”號內容為提高性知識,一般在省隊選拔及NOI比賽中才會涉及。16 1.5中國剩余定理*20 1.6斐波那契數(shù)23 1.7卡特蘭數(shù)29 1.8素數(shù)32 1.81素數(shù)的判定33 1.82素數(shù)的相關定理35 1.83MillerRabin素數(shù)測試*36 1.84歐拉定理37 1.85Pollard Rho算法求大數(shù)因子*38 1.9BabyStepGiantStep及擴展算法*46 1.10歐拉函數(shù)的線性篩法*54 1.11本章習題57 第2章群論*64 2.1置換64 2.11群的定義64 2.12群的運算64 2.13置換65 214置換群65 2.2擬陣65 2.21擬陣的概念66 2.22擬陣上的最優(yōu)化問題67 2.3Burnside引理69 2.4Polya定理72 2.5本章習題86 第3章組合數(shù)學91 3.1計數(shù)原理91 3.2穩(wěn)定婚姻問題*101 3.3組合問題分類107 3.31存在性問題108 3.32計數(shù)性問題108 3.33構造性問題109 3.34最優(yōu)化問題110 3.4排列110 3.41選排列110 3.42錯位排列113 3.43圓排列113 3.5組合116 3.6母函數(shù)*129 3.61普通型母函數(shù)130 3.62指數(shù)型母函數(shù)132 3.7莫比烏斯反演*142 3.8Lucas定理*150 3.9本章習題155 第4章概率163 4.1事件與概率163 4.2古典概率165 4.3數(shù)學期望171 4.4隨機算法181 4.5概率函數(shù)的收斂性*189 4.6本章習題197 第5章計算幾何203 5.1解析幾何初步203 5.11平面直角坐標系203 5.12點204 5.13直線204 5.14線段205 5.15多邊形205 5.16圓206 5.2矢量及其運算213 5.21矢量的加減法213 5.22矢量的數(shù)量積213 5.23矢量的矢量積214 5.3計算幾何的基本算法220 5.4平面凸包236 5.5旋轉卡殼*243 5.51計算距離244 5.52外接矩形248 5.53三角剖分250 5.54凸多邊形屬性254 5.6半平面交*264 5.7離散化272 5.8本章習題278 第6章矩陣297 6.1矩陣及其運算297 6.11矩陣的基本運算298 6.12矩陣的乘法運算299 6.13矩陣的行列式299 6.14矩陣的特殊類別300 6.2數(shù)字方陣309 6.3線性方程組及其解法314 631高斯消元法314 632LU分解法318 6.4MatrixTree定理*327 6.5本章習題336 第7章函數(shù)347 7.1函數(shù)的基本知識347 7.11函數(shù)的特性348 7.12常見的函數(shù)類型350 7.2函數(shù)的單調性354 7.3函數(shù)的凹凸性361 7.4SG函數(shù)365 7.5快速傅立葉變換*368 7.6快速數(shù)論變換*373 7.7本章習題379 |
|
| ||||||
|
| ||||||
|
| ||||||
|
| ||||||