数论 hdu_1239
来源:互联网 发布:新浪微博数据 编辑:程序博客网 时间:2024/05/23 12:06
http://acm.hdu.edu.cn/showproblem.php?pid=1239
/*p,q的范围其实可在2—50000(why?)然而,这是最小的范围吗?考虑大于10000的某个质数,不妨设为Q,另一个质数为P,则:如果P<10,P/Q<0.001如果P>10,P*Q>100000而考虑到a,b的取值范围(1<=a<=b<=1000)可知min(a/b)=0.001同时,要求: p*q<=m<=100000所以无论如何质数都不能超过10000接下来暴力枚举就可以了*/#include<stdio.h>int pri[10000],cnt;void fun(){ bool p[10000]={0}; int i,j; for(i=2;i<10000;++i) if(!p[i]) for(j=2;i*j<10000;++j) p[i*j]=1; for(cnt=0,j=2;j<10000;++j) if(!p[j]) pri[cnt++]=j;}void solve(const int &m,const int& a,const int& b){ int i,j,mm=1,p,q; for(i=0;i<cnt;++i) if(pri[i]<m) for(j=i;j<=cnt;++j) { if(pri[i]*pri[j]<=m&&pri[i]*b>=a*pri[j]&&pri[i]*pri[j]>mm) { mm=pri[i]*pri[j]; p=i; q=j; } } printf("%d %d\n",pri[p],pri[q]);}int main(){ fun(); int m,a,b; while(scanf("%d%d%d",&m,&a,&b)==3&&m) solve(m,a,b); return 0;}
- 数论 hdu_1239
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论
- 数论 ?
- 数论
- 数论
- 数论
- 数论
- 数论
- Linux守护进程
- 如何截取UNIX终端的全部输出信息
- C++类中拷贝构造函数详解
- Unicode与C程序——《windows程序设计》
- C++Primer——迭代器iterator(1)
- 数论 hdu_1239
- C++Primer——string
- Linux 自学笔记(六)——RPM 管理
- 关于extern “C”
- C++两种方式创建对象
- 进程控制
- Shell编程基础 简介
- 如何在richEdit里面特殊显示某些字符
- Firemonkey开发说明,Deploying to Android