编程之美
陈英锋
这个作者很懒,什么都没留下…
展开
-
不要被阶乘吓倒(2)
package com.demo; /** * 求N!的二进制表示中最低位1的位置,例如:给定N = 3,N!= 6,那么N!的二进制表示(1 010)的最低位1在第1位 * @author ying * */ public class factorial2 { /** * 回想一下十进制和二进制的转换过程,就是拿十进制的数不断去除于2。 * 也就是说任意一个长度为m的二转载 2014-08-06 09:42:07 · 430 阅读 · 0 评论 -
寻找发帖“水王”
package com.demo; /** * 传说,Tango有一大“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子。坊间风闻该“水王”发帖数目超过了帖子总数的一半。 * 如果你有一个当前论坛上所有帖子(包括回帖)的列表,其中帖子作者的ID也在表中,你能快速找出这个传说中的Tango水王吗? * @author ying * */ public class Wate转载 2014-08-06 10:31:42 · 493 阅读 · 0 评论 -
不要被阶乘吓倒(1)
package com.demo; /** * 给定一个整数N,那么N的阶乘N!末尾有多少个0呢?例如:N=10,N!=3628800,N!的末尾有两个0。 * 此问题不需要计算出N!的值,因为可能溢出。 * 我们可以冲哪些数相乘能得到10这个角度来考虑,问题就简单了 * @author ying * */ public class factorial1 { /**转载 2014-08-06 08:49:41 · 465 阅读 · 0 评论 -
最大公约数问题
package com.demo; /** * 写一个程序,求两个正整数的最大公约数(Greatest Common Divisor,GCD)。如果两个正整数都很大,有什么简单的算法吗? * 例如,给定两个数1100100210001,120200021,求去其最大公约数 * @author ying * */ public class GreatestCommon转载 2014-08-13 17:24:36 · 666 阅读 · 0 评论 -
寻找最大的K个数
package com.demo; /** * 寻找最大的K个数 * @author ying * */ public class FindTheBigestK { /** * 如果当N很大很大的时候,例如有100亿,这个时候数据不能全部装进内存中,所 * 以要求尽可能少地遍历所有数据。 * * 不防假设N>K,前K个数中的最大K个数是一个退化的情况,所有K转载 2014-08-13 10:41:58 · 449 阅读 · 0 评论 -
精确表达浮点数
package com.demo; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 在计算机中,有时使用float或double来存储小数是不能能到精确值的。如果你希望得 * 到精确计算的结果,最好是用分数形式来表示小数。有限小数或者无限循环小数都可以 * 转化为分数。比如转载 2014-08-14 13:29:50 · 579 阅读 · 0 评论