zoukankan      html  css  js  c++  java
  • HDU 1239 Calling Extraterrestrial Intelligence Again(找素数)

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

    题目很长,长就不说了,还是英文,这么长的英文也就算了,居然还是水题,我靠,坑嗲啊!!!

    题意:输入 m   a   b 三个数

    输出:p   q  
    要求:    p  q 是素数,且    p*q <=m   是   <=       ,,且  a/b <=  p/q  <=  1 

    4 < m <= 100000 and 1 <= a <= b <= 1000.

      p,q的范围其实可在2—50000(why?)
    然而,这是最小的范围吗?
    考虑大于10000的某个质数,不妨设为Q,另一个质数为P,则:
    1、如果P<10,P/Q<0.001
    2、如果P>10,P*Q>100000
    而考虑到a,b的取值范围(1<=a<=b<=1000)
    可知min(a/b)=0.001
    同时,要求: p*q<=m<=100000
    所以无论如何质数都不能超过10000。(事实上,不会超过9091)

    #include <stdio.h>
    #include <string.h>
    #include <queue>
    using namespace std;
    int l = 0;
    int prim[10005] = {1}, s[10005];
    void prime()
    {
    	int i, j;
    
    	memset(prim, 0, sizeof(prim));
    
    	for (i = 2; i < 10005; i++)
    	{
    		if (prim[i])
    		{
    			continue;
    		}
    
    		for (j = i + i; j < 10005; j += i)
    		{
    			prim[j] = 1;
    		}
    
    		s[l++] = i;
    	}
    }
    
    int main()
    {
    	//freopen("1.in","r",stdin);
    	//freopen("1.out","w",stdout);
    	prime();
    	int m;
    	double a , b;
    	while (~scanf("%d %lf %lf", &m, &a, &b) && (m != 0 && a + b != 0))
    	{
    		int p = 0, q = 0;
    		double x = a / b, y;
    		int i, j;
    
    		for (i = 0; i < l; i++)
    		{
    			if (s[i] > m)
    			{
    				break;
    			}
    			else
    			{
    
    				for (j = i; j<l ; j++)
    				{
    					y = (double)s[i] / s[j];
    
    					if (y >= x && s[i]*s[j] > q * p && s[i]*s[j] <= m)
    					{
    						p = s[i];
    						q = s[j];
    					}
    				}
    			}
    		}
    		printf("%d %d
    ", p, q);
    	}
    }
    


    www.cnblogs.com/tenlee
  • 相关阅读:
    A1143. Lowest Common Ancestor
    三个loading小动画实例
    CSS之圣杯布局与双飞翼布局
    sublime个人快捷键
    响应式之表格
    CSS之column语法
    使用column简单实现瀑布流效果
    Flex 布局教程:实例篇(转)
    Flex 布局教程:语法篇(转)
    简单实现瀑布流效果
  • 原文地址:https://www.cnblogs.com/tenlee/p/4420141.html
Copyright © 2011-2022 走看看