当前位置:  开发笔记 > 编程语言 > 正文

ProjectEuler问题的算法99

如何解决《ProjectEuler问题的算法99》经验,为你挑选了2个好方法。

来自http://projecteuler.net/index.php?section=problems&id=99

比较以索引形式写的两个数字如2 11和3 7并不困难,因为任何计算器都会确认2 11 = 2048 3 7 = 2187.

但是,确认632382 518061 > 519432 525806会更加困难,因为这两个数字都包含超过三百万个数字.

使用base_exp.txt(右键单击并"将链接/目标另存为..."),一个22K文本文件包含每行上带有基数/指数对的一千行,确定哪个行号具有最大数值.

我怎么能接近这个?



1> kgiannakakis..:

不是完整的解决方案,而是一些想法.您可以使用以下公式:

log(a x)= x*loga

log10可以很容易地估计为位数.通过计算右移可以很容易地估计log2.

基于以上所述,您可以显着缩小列表范围.对于剩余的数字,您必须进行完整的计算.项目Euler中是否允许数学函数?如果是,最好使用对数.



2> starblue..:

由于对数是一个单调函数,而不是x,你可以比较x*log a来找到最大值.但是,您可能需要考虑数值精度.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有