【贪心】Calling Extraterrestrial Intelligence Again POJ 1411
来源:互联网 发布:人工智能的英语怎么写 编辑:程序博客网 时间:2024/06/03 19:56
题目链接:http://poj.org/problem?id=1411
题目大意:找两个素数p,q满足a/b<=p/q<=1 且p*q<=m,求p*q最大的一组素数对。
第一次想的是筛素数,然后枚举,后来发现没有超时(汗,这让我们写正解的很GG)。
正解是先筛素数,然后用mul数组对于两个素数的积存下较小的那个素数。最后从m向下枚举。
枚举代码:
#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int maxm = 50000;int prime[6000], cnt, m, a, b;bool flag[maxm+5];void pre(){for(int i=2;i<=50000;i++)if(!flag[i]){prime[++cnt]=i;for(int j=i*i;j<=maxm&&j>0;j+=i)//j可能会溢出flag[j]=1;}return ;}int main(){pre();while(scanf("%d%d%d",&m,&a,&b),m|a|b){int ans1=0,ans2=0;for(int i=1;i<=cnt;i++)for(int j=i;j<=cnt;j++){int p=prime[i],q=prime[j];if(a*q<=b*p&&p*q<=m){if(p*q>ans1*ans2)ans1=p,ans2=q;}else break;}printf("%d %d\n",ans1,ans2);}}
正解代码:
#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const int maxm = 100000;int prime[10000], cnt, m, a, b, mul[maxm+5];bool flag[maxm+5];void pre(){for(int i=2;i<=maxm;i++)if(!flag[i]){prime[++cnt]=i;for(int j=i*i;j<=maxm&&j>0;j+=i)//j可能会溢出flag[j]=1;for(int j=1;j<=cnt;j++){if(prime[j]*prime[cnt]>maxm) break;mul[prime[j]*prime[cnt]]=prime[j];}}}int main(){pre();while(scanf("%d%d%d",&m,&a,&b),m|a|b){for(int i=m;i>=1;i--){if(!mul[i]) continue;int p=mul[i],q=i/p;if(a*q<=b*p){printf("%d %d\n",p,q);break;}}}}
阅读全文
0 0
- 【贪心】Calling Extraterrestrial Intelligence Again POJ 1411
- poj 1411 Calling Extraterrestrial Intelligence Again
- POJ 1411 Calling Extraterrestrial Intelligence Again
- POJ 1411 Calling Extraterrestrial Intelligence Again 笔记
- 1411 Calling Extraterrestrial Intelligence Again
- hdu1239 Calling Extraterrestrial Intelligence Again(贪心)
- POJ 1411 Calling Extraterrestrial Intelligence Again 解题报告
- POJ-1411 & HDOJ-1239 Calling Extraterrestrial Intelligence Again 解题报告
- poj 1411 Calling Extraterrestrial Intelligence Again 筛素数
- Calling Extraterrestrial Intelligence Again
- Calling Extraterrestrial Intelligence Again
- Calling Extraterrestrial Intelligence Again
- PKU1411 Calling Extraterrestrial Intelligence Again
- 1186 Calling Extraterrestrial Intelligence Again
- HDU1239:Calling Extraterrestrial Intelligence Again
- HDU1239 Calling Extraterrestrial Intelligence Again
- HDU Calling Extraterrestrial Intelligence Again
- 2.Calling Extraterrestrial Intelligence Again
- 我写的第一篇博客
- 【CJOJ1090】【洛谷1967】【NOIP2013】货车运输
- Java语法基础-1----4章
- 机器学习笔记之神经网络模型(二)
- 苹果审核五
- 【贪心】Calling Extraterrestrial Intelligence Again POJ 1411
- 1003 阶乘后面0的数量
- (62)集合概括、Collection共性方法
- JSP入门(二)
- poj1321棋盘问题
- [win10] [mac] 双系统下丢失mac OS X系统引导的修复方法
- #POJ2376#Cleaning Shifts(贪心 -> 最小区间覆盖)
- Spring-websocket不在Springmvc的环境下使用
- SQLMAP-初学使用