`
水木清华77
  • 浏览: 37045 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Problem25

阅读更多
package com.yao.Algorithms;

import java.math.BigInteger;

/**
 * 
 * @author shuimuqinghua77 @date 2012-4-26下午02:33:04
 *
 */
public class Problem25 {
public static void main(String[] args) {

	/**
	 * 下面是运用数学上的方式来破解这个1000位数的难题
	 * 只需要1ms
	 */
	/**
	 * 但是Fibonacci sequence还有一个重要的性质就是
	 * an=1/√5 [(1/2+√5/2)^ n-(1/2-√5/2)^n]
	 *
	 * 
	 *  还有一个黄金比例的法则
	 *  即在较高的序列,两个连续的“斐波纳契数”的序列相互分割
 		将接近黄金比例(1.618:1或1:0.618)。
 		即 an=1.618*1/√5 [(1/2+√5/2)^ (n-1)-(1/2-√5/2)^(n-1)]
		可以推出
		[√5-(1-√5)/2*√5/1.618]an=(1/2+√5)^(n-1)(√5)
		2边同时取以10为底的对数
		lg(an)=(n-1)lg((1/2+√5))+lg√5-lg√5-(1-√5)/2*√5/1.618]
		当lg(an)>=999时候 也就是an突破1000位的时候
	 */
	long  start1=System.currentTimeMillis();
	double five=Math.sqrt(5);
	double   factor1=five-(1-five)/2*five/1.618;
	double  factor2=five;
	double factor3=0.5+five/2;
	double factor4=Math.log10(factor2)-Math.log10(factor1);
	for(int i=2;;i++){
		double lg_an=Math.log10(factor3)*(i-1)+factor4;
		if(lg_an>=999)
		{
			System.out.println("结果是:"+i);
			break;
		}
			
	}
	long  end1=System.currentTimeMillis();
	System.out.println(end1-start1+"ms");
	
	/**
	 * 还有一种比较挫的做法就是使用计算机使用暴力破解  785ms
	 */
	long  start=System.currentTimeMillis();
	BigInteger fn=new BigInteger("0");
	BigInteger fn_1=new BigInteger("1");
	BigInteger fn_2=new BigInteger("1");
	int count=2;
	
	while(fn.toString().length()!=1000){
		fn=fn_1.add(fn_2);
		fn_2=fn_1;
		fn_1=fn;
		count++;
	}
	System.out.println(count);
	long  end=System.currentTimeMillis();
	System.out.println(end-start+"ms");
}

}
分享到:
评论

相关推荐

    计算机网络第六版答案

    25. Routers process network, link and physical layers (layers 1 through 3). (This is a little bit of a white lie, as modern routers sometimes act as firewalls or caching components, and process ...

    MySQL数据库考试试题.docx

    25. 连接种类:左外连接、内连接、交叉连接等(Problem 25) SQL 语言中有多种连接种类,包括左外连接、内连接、交叉连接等。 26. 创建表语句:CREATE TABLE 语句(Problem 26) CREATE TABLE 语句用于创建一个新...

    Java An Introduction to Problem Solving and Programming

    - **编写算法**: 在第25页提到了算法的概念,算法是解决问题的精确步骤,编程的核心就是将算法转化为程序代码。 - **错误识别**: 第28页提到了识别隐藏错误,这是调试过程中的关键环节,意味着学习如何寻找和修正...

    APMCM problem A

    通过监测身体上的42个点,可以得到包括重心位置、运动轨迹在内的25个身体平衡特征,如重心的前后左右移动范围、步态的稳定性及各关节活动度。通过建立特征提取模型,我们可以量化这些特性,进而全面评估老年人的平衡...

    25_programmer_must_know_the_problem.rar_The Word_笔试

    标题中的“25_programmer_must_know_the_problem.rar_The Word_笔试”指的是一个针对编程人员的资源压缩包,其中包含25个关键问题,这些问题对于程序员在面试和笔试中都具有很高的参考价值。"The Word"可能是指文档...

    动态规划Hamming_Problem 解题报告

    例如,给定质数2, 3, 和 5,Hamming序列H(2, 3, 5)是2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 25, 27, ...。题目要求我们找到H(p1, p2, p3)序列中的第i个元素,其中i是一个给定的正整数。 输入数据包括三...

    APIO2015 Problemset

    ### APIO2015 Problemset - Bali Sculptures #### 问题背景 在亚洲太平洋信息学奥林匹克(Asia-Pacific Informatics Olympiad,简称APIO)2015年的竞赛中,有一道名为“Bali Sculptures”的题目。这道题目的背景...

    滤波参考P32-MCP25XXFD-FRM,-CAN-FD-Controller-Module-DS20005678D.pdf

    12. **MCP25XXFD CAN FD SPI API** 提供了详细的API接口文档,方便开发者编写驱动程序,实现与MCP2517FD的通信。 13. **相关文档** Microchip还提供了其他相关文档,包括应用笔记、用户指南等,帮助开发者全面...

    C#,电话数字键盘问题(Mobile Numeric Keypad problem)的算法与源代码

    C#,电话数字键盘问题(Mobile Numeric Keypad problem)的算法与源代码 电话数字键盘问题 提供移动数字键盘。您只能按向上、向左、向右或向下至当前按钮的按钮。不允许您按最下面一行的角点按钮(即.*和#)。 ...

    爱立信CSR数据采集规范

    20.1 For APZ 212 11/20/25/30/33 12 20.2 APZ 212 40 Restart/RELOAD/CP FAULT 14 20.3 APZ 212 50 RESTART/RELOAD/CP FAULT 16 21. APG40 related problem 28 21.1 These data must be provided for every trouble...

    Ulam’s problem without feedback—in advance.pdf

    ### Ulam's Problem:在没有反馈的情况下搜索与说谎者博弈 #### 一、问题背景与定义 Ulam的问题起源于斯坦尼斯拉夫·乌拉姆(Stanislaw Ulam)提出的一个智力游戏,该问题涉及到如何在面对可能的谎言回答时确定一...

    problem-set-5

    ##问题集#5 ###要求 编写一个函数alphabetSoup,它接受一个字符串参数并按字母顺序返回带有字母的字符串(即...如果 num 是 25,那么输出应该是 3,因为您可以使用 11、9 和 5 个硬币或使用 9、9 和 7 个硬币获得 25。

    linux_problem_solve

    在Linux操作系统,特别是Ubuntu环境下,用户可能会遇到各种各样的问题,包括软件安装、系统配置、权限问题等。本文将详细探讨这些常见问题及其解决方案。 首先,`dpkg`是Ubuntu中的包管理工具,用于处理软件的安装...

    piarc_01 scope_of_the_road_safety_problem_2019_09_25_v2.pdf

    《道路安全手册:实践者指南》是世界道路协会(PIARC)发布的一份关于交通安全问题的重要文献,旨在为专业人士提供全球战略视角。该手册强调了道路交通安全问题的严重性及其对公共健康、社会经济的巨大影响。...

    delphi2010皮肤控件-VCLSkinv5.30FS

    Delphi VCLSkin 5.30 ... VCLSkin is a component to create skinnable user interface for Delphi/C++Builder application, It is easy to use, just put one component on mainform, ...* fix caption paint problem...

    Delphi VCLSkin v3.81 官方试用版

    checkbox.News in 3.35 2005.9.5*Support TGroupbox font color.News in 3.34 2005.8.31*Fix paint problem in Trackbar when skin file change.News in 3.33 2005.8.29*Fix problem in TcxDBCheckbox.News in 3.32 ...

Global site tag (gtag.js) - Google Analytics