苍月流影
冗余的代码
ZOJ 2330 A^B == B^A?
菜题。即便是这样我还是写了三遍……步长开的太大,结果精度不高。
把A^B == B^A两边求对数,很容易得到ln(x)/x的函数。求导,此函数在e两侧单调。故可用二分。
1
/**/
/*
2
二分逼近ln(x)/x = ln(a)/a
3
*/
4
5
#include
<
cstdio
>
6
#include
<
cmath
>
7
8
#define ZERO 1e
-
14
9
#define E exp(
1.0f
)
10
11
double
A;
12
13
int
main ()
14
{
15
//
freopen ( "in.txt", "r", stdin );
16
while
( scanf (
"
%lf
"
,
&
A )
!=
EOF )
17
{
18
if
( A
-
E
>
ZERO )
19
printf (
"
-1\n
"
);
20
else
21
{
22
double
high, low, mid, d;
23
high
=
45
, low
=
E;
24
while
( high
-
low
>=
ZERO )
25
{
26
mid
=
( high
+
low )
/
2
;
27
d
=
log ( mid )
/
mid
-
log ( A )
/
A;
28
if
( d
<
ZERO
&&
d
>
-
ZERO )
29
break
;
30
else
if
( d
>
ZERO )
31
{
32
low
=
mid
+
0.0000001
;
33
}
34
else
if
( d
<
-
ZERO )
35
{
36
high
=
mid
-
0.0000001
;
37
}
38
}
39
printf (
"
%0.5f\n
"
, mid );
40
d
=
fabs ( log ( mid )
/
mid
-
log ( A )
/
A );
41
//
printf ( "error %0.8f\n", d );
42
}
43
}
44
return
0
;
45
}
posted on 2008-02-11 14:18
杜仲当归
阅读(609)
评论(0)
编辑
收藏
引用
所属分类:
搜索剪枝
只有注册用户
登录
后才能发表评论。
导航
IT博客
首页
新随笔
联系
聚合
管理
<
2008年2月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
1
2
3
4
5
6
7
8
统计
随笔 - 9
文章 - 0
评论 - 1
引用 - 0
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
动态规划(5)
(rss)
搜索剪枝(2)
(rss)
数据结构(1)
(rss)
杜撰之语
(rss)
随笔档案
2008年3月 (1)
2008年2月 (8)
搜索
最新评论
1. re: ZOJ 1505 Solitaire
评论内容较长,点击标题查看
--x
阅读排行榜
1. ZOJ 1463 Brackets Sequence(714)
2. ZOJ 2330 A^B == B^A?(609)
3. ZOJ 2284 Inversion Number(577)
4. ZOJ 1505 Solitaire(561)
5. ZOJ 2711 Regular Words(396)
评论排行榜
1. ZOJ 1505 Solitaire(1)
2. ZOJ 1463 Brackets Sequence(0)
3. ZOJ 2711 Regular Words(0)
4. ZOJ 2284 Inversion Number(0)
5. ZOJ 2286 Sum of Divisors(0)