http://acm.hdu.edu.cn/showproblem.php?pid=1239
分析:范围2~50000->10000,居然可以暴力成功,哎
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int NM=10005;
int pi[NM/2],a[NM];
int main()
{
int i,j,k,ans,m,A,B,x,y;
double AB;
memset(a,0,sizeof(a));
k=0;
for(i=2;i<NM;i++)
{
if(!a[i])
{
for(j=2*i;j<NM;j+=i)
a[j]=1;
pi[k++]=i;
}
}
while(scanf("%d%d%d",&m,&A,&B)&&(m||A||B))
{
AB=(double)A/B;
ans=0;
for(i=0;i<k;i++)
{
for(j=k-1;j>=0;j--)
{
if(pi[i]>m||pi[j]>m||pi[i]*pi[j]>m)
continue;
if((double)pi[i]/pi[j]<AB||(double)pi[i]/pi[j]>1)
continue;
if(pi[i]*pi[j]>ans)
{
ans=pi[i]*pi[j];
x=pi[i],y=pi[j];
}
}
}
printf("%d %d\n",x,y);
}
return 0;
}