摘要: 鸽舍原理2009-07-24 23:00:03|分类: 经典算法 |标签: |字号大中小订阅(1)鸽舍原理,也称“抽屉原理”或利克雷原则,它是一个重要而又基本的数学原理,应用它可以解决各种有趣的问题,并且常常能够得到令人惊奇的结果,许多看起来相当复杂,甚至无从下手的问题,利用它能很容易得到解决。 原理1:把n+1个元素分成n类,不管怎么分,则一定有一类中有2个或2个以上的元素。 原理2:把多于m×n个物体放到n个抽屉里,那么一定有一个抽屉里有m+1个或者m+1个以 上的物体。 原理2-1:把m个元素任意放入n(n<m=个集合,则一定有一个集合呈至少要有k个元素。 其中 k= m%n( 阅读全文
posted @ 2011-08-26 19:08 qingyezhu 阅读(572) 评论(0) 推荐(0)
摘要: 勾股数定理对于a^2+b^2=c^21、a=x^2-y^22、b=2*x*y3、c=x^2+y^24、gcd(x,y)=1。5、gcd(a,b,c)=1。同时满足这五条式的是一组勾股数,而且对于所有满足这五条式的(x,y)乘一个k(k>=1),即(kx,ky)。就可以表示所有的勾股数,并且勾 股数和三元对(x,y,z)一一对应。换句话说,每个勾股数都只能表示为一个三元对(x,y,z)。并且z=1时,必须满足c%4==1才能分出来。 阅读全文
posted @ 2011-08-26 19:05 qingyezhu 阅读(334) 评论(0) 推荐(0)
摘要: [定理1] 标准Fibonacci序列(即第0项为0,第1项为1的序列)当N大于1时,一定有f(N)和f(N-1)互质其实,结合“互质”的定义,和一个很经典的算法就可以轻松证明对,就是辗转相除法互质的定义就是最大公约数为1数学归纳法是很有用的证明方法,我们接下来这个定理用数学归纳法就很好证明:[定理2]若i为奇数, f(i)*f(i)=f(i-1)*f(i+1)+1,否则f(i)*f(i)=f(i-1)*f(i+1)-1对,这个定理用数学归纳法可以轻松证明,大家有兴趣可以自己尝试[定理3] f(n)=f(i)*f(n-i-1)+f(i+1)*f(n-i)f(n)=f(1)*f(n-2)+ f( 阅读全文
posted @ 2011-08-26 18:42 qingyezhu 阅读(2409) 评论(0) 推荐(1)
摘要: hdu 2643/*第二类Stirling数是把包含n个元素的集合划分为正好k个非空子集的方法的数目。递推公式为:S(n,k) = 0(n<k||k=0),S(n,n) = S(n,1) = 1,S(n,k) = S(n-1,k-1) + kS(n-1,k).*/#include<stdio.h>#define LL long long#define nmax 101#define nnum 20090126LLLL num[nmax][nmax], fac[nmax];void init() { int i, j; for (i = 1, fac[0] = 1; i < 阅读全文
posted @ 2011-08-26 16:52 qingyezhu 阅读(555) 评论(0) 推荐(0)