2011-12-31 01:58:02

地址:http://acm.hdu.edu.cn/showproblem.php?pid=1239

题意:给m、a、b。求一对素数p,q(p<q)使得p*q<=m且p/q >= a/b。若有多对,输出p*q最大的一对。

mark:刚开题看了半天,才看明白啥意思。

看到m是10w,然后case是2000组,一下懵了,以为不能枚举。后来冷静分析下,其实可以。

以下是几个比较重要的结论&分析。

1)若m' = p*q,则必不存在另外一对素数p',q'使得m' = p' * q'。

2) 若p固定,q要满足:1、p*q<=m;2、p/q>=a/b。则可以推出q是满足小于min(m/p, p*b/a)的素数,而因为要求p*q最大,所以q应该是满足条件的最大素数。

3) 因为p>=q而且要求p*q <=m,所以p <=sqrt(m)。

因此,我们只需要从2到sqrt(m)枚举每个素数p,计算出相应的q。m是10w,开根号只有300多,非常小,素数就更少了。即使是2000*300也是可以接受的。

代码:

# include <stdio.h># include <stdlib.h># include <math.h>

int IsPrime[50010] = {1, 1} ;int Primes[10000] ;int pcnt = 0 ;

void init(){int i, j ;for (i = 2 ; i <= 50003 ; i++)    {if (!IsPrime[i])        {            Primes[pcnt++] = i ;for (j = 2*i ; j <= 50003 ; j+=i)                IsPrime[j] = 1 ;        }    }}

int min(int a, int b){return a<b?a:b;}

int main  (){int m, a, b, sqrtm ;int p, q, ansp, ansq ;    init () ;while (~scanf ("%d%d%d", &m, &a, &b) && (m||a||b))    {        sqrtm = sqrt(1.0*m) ;        ansp = ansq = 1 ;for (p = 0 ; Primes[p] <= sqrtm ; p++)        {            q = min(m/Primes[p], Primes[p]*b/a) ;while (IsPrime[q]) q-- ;if (Primes[p]*q > ansp * ansq)                ansp = Primes[p], ansq = q ;        }        printf ("%d %d\n", ansp, ansq) ;    }return 0 ;}

转载于:https://www.cnblogs.com/lzsz1212/archive/2012/01/07/2315423.html

[恢]hdu 1239相关推荐

  1. HDU 1239 Calling Extraterrestrial Intelligence Again

    题目 http://acm.hdu.edu.cn/showproblem.php?pid=1239 Problem Description A message from humans to extra ...

  2. [恢]hdu 2015

    2011-12-14 05:49:09 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2015 题意:中文,忒麻烦了. 代码: # include < ...

  3. [恢]hdu 2014

    2011-12-12 05:46:08 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2014 题意:中文题. mark:wa了3次!!!因为敲错变量!!! ...

  4. [恢]hdu 1412

    2011-12-20 14:46:51 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1412 题意:中文. 代码: # include <stdio ...

  5. [恢]hdu 2098

    2011-12-16 04:54:26 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2098 题意:中文,水.直接爆. 代码: # include < ...

  6. [恢]hdu 1259

    2011-12-17 06:39:22 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1259 题意:中文.水题,直接模拟. 代码: # include & ...

  7. [恢]hdu 2524

    2011-12-14 05:20:24 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2524 题意:中文. mark:有意思.2个维度分开考虑,结果相乘, ...

  8. [恢]hdu 1028

    2011-12-16 08:28:00 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1028 题意:一个整数n,可以表示为多少种和的形式. mark:dp ...

  9. [恢]hdu 1279

    2011-12-20 05:17:41 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1279 题意:中文.没啥好说的. 代码: # include < ...

最新文章

  1. R语言ggplot2可视化:在可视化结果图的四个角落(左上、左下、右上、右下)添加标签实战
  2. spring注入私有字段_Spring字段依赖注入示例
  3. 五. 面向对象高级特性4. 接口的概念和使用
  4. codeforce Gym 100500F Door Lock (二分)
  5. ug建模文本怎么竖着_UG建模知乎答疑练习小集锦
  6. 配置Mysql实现主从复制与读写分离
  7. js获取数组中最大和最小值
  8. SAP License:SAP Solution Manager中的常用命令
  9. ACR122U Android端应用开发入道指南
  10. 机器学习算法工程师面试问题汇总(持续更新)
  11. Office EXCEL 创建图片超链接打不开怎么办 Excel打开图片提示发生了意外错误怎么办
  12. 如何查看电脑操作系统及系统类型
  13. python3 接入IOS推送apn
  14. el-table 跨行/跨列 的写法
  15. matlab回归分析sst_线性回归(2)—— 模型评估
  16. Py之pyod:pyod的简介、安装、使用方法之详细攻略
  17. dft变换的两幅图_图片DFT变换
  18. python soap服务_Python SOAP服务器/客户端
  19. Objective-C语法之Category的使用
  20. unit 5 句子的要素及种类

热门文章

  1. oracle外键有什么用,深入理解Oracle索引(20):外键是否应该加索引
  2. 三个球A,B,C大小形状相同,且其中有一个球与其他球的重量不同,要求找出这个不一样的球
  3. 实验一熟悉matlab环境,数字信号处理报告实验一:熟悉MATLAB环境.doc
  4. vcm服务器如何修改端口,VCM2000是迈普协同通信解决方案的网管服务器.doc
  5. leecode62 不同路径
  6. redis——实战关注
  7. C语言: const关键字与指针
  8. online游戏服务器架构—用户登录数据组织 .
  9. 数学建模 层次分析法
  10. 人最重要的能力是什么?