随笔分类 -  POJ

摘要:很简单的一道题目,包含了日期计算常见的一些内容,如闰年判断 表达式,日期计算等 阅读全文
posted @ 2012-01-30 22:37 狼の禅 阅读(1579) 评论(0) 推荐(4)
摘要:利用二进制扫描的方法快速的计算abmod c,显然用常规方法计算74237mod 4233计算量过大。基本原理:(a×b)mod c=((amod c)×b)mod c例如:35mod 7=3(101)2mod 7=((3(100)2mod 7)×3)mod 7=((9(10)2mod 7)×3)mod 7=(((9mod 7)(10)2mod 7)×3)mod 7=((2(10)2mod 7)×3)mod 7=((4(1)2mod 7)×3)mod 7=(4×3)mod 7=5实现代码如下(C语言版)1 int 阅读全文
posted @ 2012-01-18 15:44 狼の禅 阅读(1119) 评论(0) 推荐(1)
摘要:求最大公约数的Euclid算法需要用到大量的取模运算,这在大多数计算机上是一项复杂的工作,相比之下减法运算、测试数的奇偶性、折半运算的执行速度都要更快些。二进制最大公约数算法避免了Euclid算法的取余数过程。二进制最大公约数基于下述事实:若a、b都是偶数,则gcd(a,b)=2*gcd(a/2,b/2)若a是奇数、b是偶数,则gcd(a,b)=gcd(a/2,b/2)若a、b都是奇数,则gcd(a,b)=gcd((a-b)/2,b)因此可写出二进制最大公约数算法如下(C语言版): 1 int gcd(int a,int b){ 2 int c=1; 3 while(a-b){... 阅读全文
posted @ 2012-01-18 14:16 狼の禅 阅读(1136) 评论(0) 推荐(1)
摘要:记a、b的最大公约数为gcd(a,b)。这里对于最大公约数的讨论仅限于非负整数,因为显然有gcd(a,b)=gcd(|a|,|b|)。计算最大公约数的Euclid算法基于下面定理:【GCD递归定理】对于任意非负整数a和任意正整数b,gcd(a,b)=gcd(b,a%b)。Euclid算法最简单的递归版本(C语言版)如下:1 int Euclid(int a,int b)2 {3 if(b)return Euclid(b,b%a);else return a;4 }迭代版本(C语言版)如下:1 int Euclid(int a,int b)2 {3 while(a=a%b)a^=... 阅读全文
posted @ 2012-01-17 16:31 狼の禅 阅读(1867) 评论(2) 推荐(3)
摘要:发现在做ACM题目的时候经常会用到一些质数,因此使用埃拉托斯特尼筛法打印质数表以保存之。埃氏筛或爱氏筛,是一种公元前250年由古希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。给出要筛数值的范围n,找出以内的素数。先用2去筛,即把2留下,把2的倍数剔除掉;再用下一个质数,也就是3筛,把3留下,把3的倍数剔除掉;接下去用下一个质数5筛,把5留下,把5的倍数剔除掉;不断重复下去......。 C++代码如下:long FilterPrime(int n){ long count=0; bool* isPrimes = new bool[n+1]; for(int i=2;i<=n;++ 阅读全文
posted @ 2012-01-13 21:35 狼の禅 阅读(3838) 评论(1) 推荐(5)
摘要:I’m a programmer,damnit. I don’t write code. ——The anti-programming programmer 阅读全文
posted @ 2012-01-13 17:01 狼の禅 阅读(1477) 评论(1) 推荐(1)

我要啦免费统计