
数学
binling
这个作者很懒,什么都没留下…
展开
-
最大公约数,最小公倍数,素数等问题
两个数的 最小公倍数 等于两个数的乘积除以最大公约数,scm (a, b) = a * b / gcd (a, b),所以主要是最大公约数 gcd 问题:辗转相除法 依据就是欧几里得定理: gcd(a, b) = gcd(b, a%b) def gcd (a, b): while b > 0: c = a % b a, b = b, c re原创 2014-12-24 13:58:48 · 630 阅读 · 0 评论 -
卡塔兰数的应用
卡塔兰数定义 f(n) =原创 2014-09-29 20:17:29 · 892 阅读 · 0 评论 -
组合数学几种“数”
1 卡塔兰数: 以k为轴划分子问题,左边子问题的解的个数和右边子问题的解的个数是原问题以k为轴的解法的2个独立步骤,适用乘法原理;分别以1,2,。。。n为轴,是原问题的n种解法,适用加法原理。 f(n) = f(0)f(n-1) + f(1)f(n-2) + ... + f(n-1)f(0) = f(k-1)f(n-k) k=1...n 2. 错排公式:原创 2014-12-23 18:36:45 · 915 阅读 · 0 评论 -
快速幂
1. 减半递归法 计算x^n 先算 half = x^(n/2),如果n是偶数,结果就是 half * half,如果n是奇数,结果就是half * half * x。递归出口 n==1 时候 return 1 2 非递归(平方法) 对于n的每个二进制位,不断平方底数,得到 x^(2^0), x^(2^1), x^(2^2), x^(2^3) 的序列,如果对应二进制位为1,则将这个底原创 2014-12-11 11:41:36 · 441 阅读 · 0 评论 -
最少砝码问题(用一部分数的和/差表示区间上所有的整数)
问题1, 需要表示[1, N] 的所有重量,最少需要多少砝码? 答案:需要 1,2, 3, ... , logN,也就是 logN个。每个砝码代表二进制数的一位,N有logN个二进制位。 问题2, 需要表示[1, N] 的所有重量,手头已有一些砝码,问:怎样添加新的砝码,使得需要添加的砝码数最少? 不变式:curMax为当前可以表示的重量的最大值,也就是[1, curMax] 都可原创 2015-08-07 17:34:04 · 2873 阅读 · 0 评论 -
打表法经典2题:小于n的质数和第k个丑数
1 求小于n的所有质数 1 开一个大小为n的bool数组A,下标代表整数,值true代表被mark过,有因子,非素数 2) i 从 2开始到n - 1,如果A[i]没被mark,A[i]就是质数,然后mark有A[i]因子的数(2* A[i], 3*A[i], 4*A[i] 且 public int countPrimes(int n) { boolean[] marked = ne原创 2015-07-07 23:57:33 · 968 阅读 · 0 评论