博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj1411
阅读量:6267 次
发布时间:2019-06-22

本文共 1370 字,大约阅读时间需要 4 分钟。

简单题

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
 
#include
<
iostream
>
#include
<
cstdio
>
#include
<
cstdlib
>
#include
<
cstring
>
#include
<
cmath
>
using
namespace
std;
#define
maxn 100005
bool
is
[maxn];
long
long
prm[maxn];
int
n, a, b, m, p, q;
int
getprm(
int
n)
{
int
i, j, k
=
0
;
int
s, e
=
(
int
) (sqrt(
0.0
+
n)
+
1
);
memset(
is
,
1
,
sizeof
(
is
));
prm[k
++
]
=
2
;
is
[
0
]
=
is
[
1
]
=
0
;
for
(i
=
4
; i
<
n; i
+=
2
)
is
[i]
=
0
;
for
(i
=
3
; i
<
e; i
+=
2
)
if
(
is
[i])
{
prm[k
++
]
=
i;
for
(s
=
i
*
2
, j
=
i
*
i; j
<
n; j
+=
s)
is
[j]
=
0
;
}
for
(; i
<
n; i
+=
2
)
if
(
is
[i])
prm[k
++
]
=
i;
return
k;
}
int
binarysearch()
{
int
l
=
0
;
int
r
=
n;
while
(l
<
r)
{
int
mid
=
(l
+
r)
/
2
+
((l
+
r)
&
1
);
if
(((
long
long
)prm[mid])
*
prm[mid]
<=
m)
l
=
mid;
else
r
=
mid
-
1
;
}
return
l;
}
void
work(
int
l,
int
r)
{
int
ans
=
prm[l]
*
prm[r];
q
=
p
=
prm[l];
while
(l
>=
0
)
{
if
(prm[l]
*
b
<
a
*
prm[r])
break
;
while
(r
<
n
-
1
&&
prm[l]
*
b
>=
a
*
prm[r
+
1
]
&&
prm[l]
*
prm[r
+
1
]
<=
m)
r
++
;
if
(ans
<
prm[l]
*
prm[r])
{
p
=
prm[l];
q
=
prm[r];
ans
=
prm[l]
*
prm[r];
}
l
--
;
}
printf(
"
%d %d\n
"
, p, q);
}
int
main()
{
//
freopen("t.txt", "r", stdin);
n
=
getprm(maxn
-
1
);
while
(scanf(
"
%d%d%d
"
,
&
m,
&
a,
&
b), m
|
a
|
b)
{
int
l, r;
l
=
r
=
binarysearch();
work(l, r);
}
return
0
;
}

转载于:https://www.cnblogs.com/rainydays/archive/2011/06/16/2083063.html

你可能感兴趣的文章
Silverlight实用窍门系列:70.Silverlight的视觉状态组VisualStateGroup
查看>>
照片筛选与上传功能
查看>>
Hello ZED
查看>>
常见web攻击方式
查看>>
hdu 4472
查看>>
oracle存储过程中is和as区别
查看>>
windows 2003 群集
查看>>
几个gcc的扩展功能
查看>>
Spark一个简单案例
查看>>
关于结构体占用空间大小总结(#pragma pack的使用)
查看>>
通过浏览器查看nginx服务器状态配置方法
查看>>
shell简介
查看>>
android 使用WebView 支持播放优酷视频,土豆视频
查看>>
怎么用secureCRT连接Linux
查看>>
C# 使用WinRar命令压缩和解压缩
查看>>
linux学习笔记一----------文件相关操作
查看>>
Mono for Android 优势与劣势
查看>>
服务器端开发技术
查看>>
Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
查看>>
ajax提交多个对象,使用序列化表单和FormData
查看>>