杭电Acm-1239解题心得

这道题目和1238同样基本搜索的思路。题目的大意是给定m,a,b三个数,要找到p,q两个质数,满足一下条件:
  1. p*q <= m
  2. a/b<= p/q <= 1
并且要求找着这样的p和q的乘积最接近m的。数值范围规定如下:
  1. 4 < m <= 100000
  2. 1 <= a <= b <= 1000
这类题目的基本思路
  1. 缩小搜索范围
  2. 确定搜索的顺序
  3. 注意剪枝
具体做法:第一步就是要缩小素数的范围,第一感觉是可以在[2,m / 2]范围内查找,但这不是最小的范围。最土的方法就是试验,可以得出最小的范围是[2, 9091]。搜索的范围,因为是要找到最大的值,可以尝试从大到小遍历。对于剪枝的问题,要找到几个条件中,为真或为假的频率,适当调整判断的顺序。对于,对于或而言,如果第一个为真,后面无须再判断,对于且来说,第一个为假,后面的无需再判断。
代码比较简单,就不上了。

转载于:https://www.cnblogs.com/sing1ee/archive/2011/12/31/2764989.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值