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

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

看了半天,没思路,摘了一位dn的,学习了!

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
 
先看对数的性质,loga(b
^
c)
=
c
*
loga(b),loga(b
*
c)
=
loga(b)
+
loga(c);
假设给出一个数10234432,那么log10(
10234432
)
=
log10(
1.0234432
*
10
^
7
)
=
log10(
1.0234432
)
+
7
;
log10(
1.0234432
)就是log10(
10234432
)的小数部分.
log10(
1.0234432
)
=
0.010063744
10
^
0.010063744
=
1.023443198
那么要取几位就很明显了吧
~
先取对数(对10取),然后得到结果的小数部分bit,pow(
10.0
,bit)以后如果答案还是
<
1000那么就一直乘10。
注意偶先处理了0
~
20项是为了方便处理
~
这题要利用到数列的公式:an
=
(
1
/
5
)
*
[((
1
+
5
)
/
2
)
^
n
-
((
1
-
5
)
/
2
)
^
n](n
=
1
,
2
,
3
.....)
取完对数
log10(an)
=-
0.5
*
log10(
5.0
)
+
((
double
)n)
*
log(f)
/
log(
10.0
)
+
log10(
1
-
((
1
-
5
)
/
(
1
+
5
))
^
n)其中f
=
(sqrt(
5.0
)
+
1.0
)
/
2.0
;
log10(
1
-
((
1
-
5
)
/
(
1
+
5
))
^
n)
->
0
所以可以写成log10(an)
=-
0.5
*
log10(
5.0
)
+
((
double
)n)
*
log(f)
/
log(
10.0
);
最后取其小数部分。
#include
<
iostream
>
#include
<
cmath
>
using
namespace
std;
int
fac[
21
]
=
{
0
,
1
,
1
};
const
double
f
=
(sqrt(
5.0
)
+
1.0
)
/
2.0
;
int
main()
{
double
bit;
int
n,i;
for
(i
=
3
;i
<=
20
;i
++
)fac[i]
=
fac[i
-
1
]
+
fac[i
-
2
];
//
求前20项
while
(cin
>>
n)
{
if
(n
<=
20
)
{
cout
<<
fac[n]
<<
endl;
continue
;
}
bit
=-
0.5
*
log(
5.0
)
/
log(
10.0
)
+
((
double
)n)
*
log(f)
/
log(
10.0
);
//
忽略最后一项无穷小
bit
=
bit
-
floor(bit);
bit
=
pow(
10.0
,bit);
while
(bit
<
1000
)bit
=
bit
*
10.0
;
printf(
"
%d\n
"
,(
int
)bit);
}
return
0
;
}
摘自:

转载于:https://www.cnblogs.com/FCWORLD/archive/2011/04/20/2022515.html

你可能感兴趣的文章
TEC-005-cifs-Host is down
查看>>
saltstack模块之pkg相关模块
查看>>
linux查看内核版本号
查看>>
SVN合代码时遇到的问题
查看>>
tuna.tsinghua yum repo
查看>>
ext store remove old datas load new datas优化
查看>>
【Jetty Server 开发系列之一】搭建Jetty Server环境&&Http客户端实现交互
查看>>
【COCOS2D-HTML5 开发之三】示例项目附源码及运行的GIF效果图
查看>>
mysql5.6的安装(rpm)
查看>>
Gamebryo实例学习之八InputDemo
查看>>
关于CSDN2013博客之星的一些看法
查看>>
"安全删除硬件并弹出媒体"的列表中出现内置硬盘的解决办法.
查看>>
LINUX中JDK环境变量配置
查看>>
linux 切换用户之后变成-bash-3.2$的解决方法
查看>>
我的友情链接
查看>>
使用list
查看>>
Ubuntu 12.04 安装 gcc-4.8 及 gdb 7.6
查看>>
DOM设置表格隔行变色js代码及鼠标悬停在哪行,哪行字体就加粗效果
查看>>
GII 和 DEBUG 模块出现 403 解决
查看>>
shell历史命令记录功能
查看>>