zoukankan      html  css  js  c++  java
  • hdu 1239 水题

    View Code
    //hdu 1239  水题
    
    
    //题目从In other words开始看就可以了
    //题目给出三个整数 m a b, 0 < a/b < 1
    //要求出两个素数 p, q
    //使得 p*q <= m 并且 a/b <= p/q <= 1
    //要求输出满足条件的 p和 q中 p*q 最大的一对
    //我是先打素数表再,暴力过了的
    
    
    #include <stdio.h>
    #include <string.h>
    
    #define N 100005
    
    int m, a, b;
    bool no_prime[N];
    
    
    void get_prime()    //素数打表
    {           //317^2 刚好大于 100000
        for(int i = 3; i < 317; i += 2)
        {
            if(no_prime[i] == false)
            {
                int tmp = i << 1;
                for(int j = i * i; j < N; j += tmp)
                    no_prime[j] = true; //不是素数的标为true
            }
        }
    }
    
    int main()
    {
        get_prime();
        while(scanf("%d%d%d", &m, &a, &b), m || a || b)
        {
            bool flag = false;
            double limit = a * 1.0 / b;
    
            int p = 0, q = 0;
            for(int i = 2; i <= m; ++i) //1 不是素数
            {
                if(no_prime[i] != true && i%2 != 0 || i == 2)
                {
                    for(int j = 2; j <= i && i*j <= m; ++j)
                    {
                        if((no_prime[j] != true && j%2 != 0 || j == 2))
                        {   //题目要求答案为 满足条件的 p和 q中 p*q 最大的一对
                            if(j*1.0 / i >= limit && i*j > p*q)
                            {
                                p = j;
                                q = i;
                            }
                        }
                    }
                }
            }
            printf("%d %d\n", p, q);
        }
        return 0;
    }
  • 相关阅读:
    函数
    A × B problem
    求n的阶乘
    自己构建一个vector函数
    int与string的互相转化
    列一列(斐波那契数列)
    找一找
    c++大数计算模板
    JSON--js中 json字符串转对象、对象转字符串
    JSON
  • 原文地址:https://www.cnblogs.com/gabo/p/2444038.html
Copyright © 2011-2022 走看看