数论入门整理(updating)
一、gcd lcm
基礎中的基礎,一般用來處理計算第一步什么的,分數化簡之類。
LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b) {LL c = gcd(a, b);return a / c * b; }例題:
hrbust 1178
hdu 2028 Lowest Common Multiple Plus
二、exgcd
通常用于解二元一次方程,線性同余方程組,高次同余方程組(babystep_giantstep)。
中國剩余定理。
void exgcd(LL a, LL b, LL& d, LL& x, LL& y)//ax + by = d, d = gcd(a, b) { if (b == 0) { d = a; x = 1; y = 0; } else { exgcd(b, a % b, d, y, x); y -= x * (a / b); } }例題:
二元一次方程:
poj 1061 + poj 2115 + poj 2142
uva 10673 Play with Floor and Ceil
線性同余方程組:
poj 2891 Strange Way to Express Integers
hdu 1573
高次同余方程組:
poj 3243 poj 2417 hdu 2815
中國剩余定理:
poj 1006 Biorhythms
三、素數
也是第一步的處理。
例題:
hdu 2098 分拆素數和
poj 2689 Prime Distance? 大素數
poj 1811 + poj 2429 (Miller_Rabin大素數測試 + Pollard_Rho大合數分解)
四、快速冪
普通快速冪和矩陣快速冪。
用于求比較大的數的冪次取模。
比較大小可以取對數。
例題:
快速冪:
uva 10006 Carmichael Numbers?
poj 1995?
矩陣快速冪:
poj 3233(矩陣快速冪)
hdu 3292 No more tricks, Mr Nanguo(矩陣快速冪解佩爾方程)
五、歐拉函數
小于一個數x且與x互素的數的個數,就是歐拉函數,保存在phi[x]中。
1.打表:
例題:
基礎:
uva 10820 poj 2407 poj 1284 poj 2478 poj 3090
進階:
poj 3696 + poj 3358
六、因子相關
因子和,因子個數和,積性函數。
例題:
uva 10791 Minimum Sum LCM(拆分素因子)
poj 1845 (因子和)
poj 2992 (因子個數和)
hdu 1452 (積性函數+因子和+乘法逆元)
poj 2480 (積性函數+素因子和)
七、fib與catalan
catalan:
h(n)?=?(4?*?n?-?2)?/?(n?+?1)?*?h(n?-?1)
經典的總結:http://www.cnblogs.com/wuyuegb2312/p/3016878.html
例題:
hdu 1023 Train Problem II
uva 10303 uva 991
fib:
通常的fib直接打個表或者亂搞一下。
但是fib有個擴展就是fib的矩陣形式,在要求fib比較大的情況下,直接用矩陣快速冪搞定。
???????????100111110??????Sn?1Fn?1Fn?2???=???SnFnFn?1???
例題:
uva 10229 (fib矩陣形式+矩陣快速冪)uva 10518 (fib(n)調用多少次)
八、概率論、組合數學
排列組合,貝葉斯公式、全概率公式。
例題:
uva 10105 uva 10910 uva 10943(排列組合C)
hdu 2048 and 2049(錯排問題)
uva 19759 (Dp+概率)
uva 10900 (期望)
uva 10056(等比數列求和)
uva 11181(貝葉斯公式)
uva 10277 (概率論 + 暴力)
uva 10169 (概率+取小數點后0的位數)
九、java大數使用
uva 10183 uva 10519 uva 10516
十、數學問題+技巧
uva 10061 How many zero's and how many digits ?(不同進制階乘末尾幾個0)+poj 1401
uva 11121 Base -2 (負進制計算)
uva 128 Software CRC(進制轉換)
uva 106 Fermat vs. Pythagoras(勾股數求法)
uva 11029 Leading and Trailing(求n^k的前幾位和后幾位 證明)
poj 1091 跳蚤(n元一次不定方程+斥容原理)
uva 11027(康拓展開求序列|編碼解碼)
uva 10491 (廣義三門問題)
poj 1695 (莫比烏斯反演)
十一、組合數學學習
1.排列組合:
| Type | Sample | Order Counts? | Rep? | Numbers of ways |
| 無重組合 | 從n個球中取r個 | No | No | C(n,r) |
| 無重排列 | 從n個人中找r個排隊 | Yes | No | P(n,r) |
| 可重組合 | 從n種水果中選r個拼果籃 | No | Yes | C(n + r - 1, r) |
| 可重排列 | n個字母組成的r位串 | Yes | Yes | n ^ r |
| 多重全排列 | r1個a,r2個b組成的n位串 | Yes | Yes | n! / (r1! r2!) |
總結
以上是生活随笔為你收集整理的数论入门整理(updating)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 值得每个人看的一篇文章——沉没成本和赌徒
- 下一篇: 伟大时刻:小米的命门