• poj1411


    简单题

    View Code
    #include <iostream>
    #include
    <cstdio>
    #include
    <cstdlib>
    #include
    <cstring>
    #include
    <cmath>
    using namespace std;

    #define maxn 100005

    bool is[maxn];
    long long prm[maxn];
    int n, a, b, m, p, q;

    int getprm(int n)
    {
    int i, j, k = 0;
    int s, e = (int) (sqrt(0.0 + n) + 1);
    memset(
    is, 1, sizeof(is));
    prm[k
    ++] = 2;
    is[0] = is[1] = 0;
    for (i = 4; i < n; i += 2)
    is[i] = 0;
    for (i = 3; i < e; i += 2)
    if (is[i])
    {
    prm[k
    ++] = i;
    for (s = i * 2, j = i * i; j < n; j += s)
    is[j] = 0;
    }
    for (; i < n; i += 2)
    if (is[i])
    prm[k
    ++] = i;
    return k;
    }

    int binarysearch()
    {
    int l = 0;
    int r = n;
    while (l < r)
    {
    int mid = (l + r) / 2 + ((l + r) & 1);
    if (((long long)prm[mid]) * prm[mid] <= m)
    l
    = mid;
    else
    r
    = mid - 1;
    }
    return l;
    }

    void work(int l, int r)
    {
    int ans = prm[l] * prm[r];
    q
    = p = prm[l];
    while (l >= 0)
    {
    if (prm[l] * b < a * prm[r])
    break;
    while (r < n - 1 && prm[l] * b >= a * prm[r + 1] && prm[l] * prm[r + 1] <= m)
    r
    ++;
    if (ans < prm[l] * prm[r])
    {
    p
    = prm[l];
    q
    = prm[r];
    ans
    = prm[l] * prm[r];
    }
    l
    --;
    }
    printf(
    "%d %d\n", p, q);
    }

    int main()
    {
    //freopen("t.txt", "r", stdin);
    n = getprm(maxn - 1);
    while (scanf("%d%d%d", &m, &a, &b), m | a | b)
    {
    int l, r;
    l
    = r = binarysearch();
    work(l, r);
    }
    return 0;
    }

  • 相关阅读:
    Redis 简介
    图片懒加载、selenium和PhantomJS
    Python网络爬虫之三种数据解析方式
    Scrapy框架之CrawlSpider
    Scrapy 框架
    python 网络爬虫概念与HTTP(s)协议
    Mysql概念及基本操作
    Python re 模块
    线程与进程应用场景
    全局解释器锁 GIL
  • 原文地址:https://www.cnblogs.com/rainydays/p/2083063.html
Copyright © 2020-2023  润新知