本文主要是介绍【HDU】 1239 Calling Extraterrestrial Intelligence Again,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Calling Extraterrestrial Intelligence Again
题目链接
- Calling Extraterrestrial Intelligence Again
题目大意
题目名字好长~~
题目也好长~~
其实看最后一段就够了…给你三个数m,a,b 现在要你求两个质数p,q满足
ab≤pq≤1 m≥pq max(pq)
max(qp)代表pq乘积最大,求出满足以上3个条件的pq即可。
题解
直接打表暴力。简单粗鲁。
代码
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>using namespace std;int m,a,b,h,q,p,tab[100005],vis[100005];void dealtab(int high)
{h=0;memset(vis,0,sizeof(vis));memset(tab,0,sizeof(tab));for (int i=2;i<=high;i++) if (!vis[i]){int j=i;tab[h++]=i;while (j<=high){vis[j]=1;j+=i;}}
}int main()
{while(scanf("%d%d%d",&m,&a,&b),m!=0 || a!=0 || b!=0){q=0; p=0;int high=(int) (sqrt(m*(b*1.0/a))+0.5);dealtab(high);bool f=0; int ans=0;for (int i=h-1;i>=0;i--)for (int j=i;j>=0;j--)if ((tab[j]*1.0)/tab[i]<=1 && (a*1.0)/(b)<=(tab[j]*1.0)/tab[i] && tab[i]*tab[j]<=m && tab[i]*tab[j]>ans){ans=tab[i]*tab[j];q=tab[i]; p=tab[j];break;}printf("%d %d\n",p,q);}return 0;
}
这篇关于【HDU】 1239 Calling Extraterrestrial Intelligence Again的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!