题目

源地址:

http://poj.org/problem?id=1411

理解

打表暴力水过,估计是因为数据弱= =。

代码

#include<cstdio>
int m, a, b;
bool ok[100010];
int prime[100000], cnt, ansx, ansy, ans;

void init()
{
    for (int i = 2; i <= 100000; i++)
        if (!ok[i])
        {
            for (int j = i; j <= 100000 / i; j++)
                ok[i * j] = 1;
            prime[++cnt] = i;
        }
}

int main(int argc, char const *argv[])
{
    init();
    while (scanf("%d%d%d", &m, &a, &b), m || a || b)
    {
        ans = 0;
        for (int i = 1; i <= cnt; i++)
            for (int j = 1; j <= i; j++)
                if (prime[i]*prime[j] > m) break;
                else if (prime[j]*b >= prime[i]*a && ans < prime[i]*prime[j])
                {
                    ans = prime[i] * prime[j];
                    ansx = prime[j];
                    ansy = prime[i];
                }
        printf("%d %d\n", ansx, ansy);
    }
    return 0;
}

更新日志

  • 2014年08月12日 已AC。