斐波那契数列大数的压位c语言,HDU 1568 Fibonacci(大数前4位)

分析:x=1234567.求其前四位数: log10(x)=log10(1.234567)+6. 所以1.234567=10^(log10(x)-6). 1234 =(int) 10^(log10(x)-6)*1000. [6=length-4,length=(int)log10(x)+1]同时我们知道:

5e822f3d3f0210553e63d9fc61b3fe56.png

对于小于10000的数字可以存储在数组中直接输出,大于等于10000的数字则用上式计算。我们能知道:i<21 f[i]<1e4.当n=21时[(1-sqrt(5))/2]^n --> 0.618^n 0.618自乘5次就会退一个10进制等级。所以n>=21可以忽略[(1-sqrt(5))/2]^n。log10(x)=log10[ 1/sqrt(5)*[(1+sqrt(5))/2]^n ]=log10(1/sqrt(5))+n*log10(1+sqrt(5))/2).

例如:

log10(12345678)=log10(1.2345678*10^7)=log10(1.2345678)+7

log10(1.2345678)就是log10(12345678)的小数部分.

log10(1.2345678)=qs

10^qs=1.2345678,

要求该数的前4位,则将 1.2345678*1000即可。

#include

#include

#include

using namespace std;

const int maxn=50; //,mod=1e4;

int f[maxn];

int main()

{

f[0]=0;

f[1]=1;

for(int i=2;i<21;i++){

f[i]=f[i-1]+f[i-2]; //i<21 f[i]<1e4.

}

int n;

double q1=log10(1/sqrt(5)),q2=log10((1+sqrt(5))/2);

while(cin>>n){

if(n<21){ printf("%d\n",f[n]); continue; }

double t=q1+n*q2;

double p=t-(int)t;

double ans1=pow(10,p);

cout<

}

return 0;

}

&lbrack;hdu 1568&rsqb; Fibonacci数列前4位

2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列(f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2 ...

HDU 1568 Fibonacci【求斐波那契数的前4位&sol;递推式】

Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

HDU 1568 Fibonacci 数学&equals; &equals; 开篇

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1568 分析:一道数学题 找出斐波那契数列的通项公式,再利用对数的性质就可得到前几位的数 斐波那契通项公 ...

hdu 1568 Fibonacci 快速幂

Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

hdu 1568 Fibonacci 数学公式

Fibonacci Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到的Fibonacci数列(f[0]=0,f[1]=1;f[i] = ...

HDU 1568 Fibonacci

题解:首先,对于小于10000的斐波那契数,我们直接计算,当大于10000时,用公式,由于只要输出前四位,所以不用考虑浮点数的问题,算出其取log的结果: tmp=(log(sq5/5)+n*log( ...

hdu 4099 Revenge of Fibonacci 大数&plus;压位&plus;trie

最近手感有点差,所以做点水题来锻炼一下信心. 下周的南京区域赛估计就是我的退役赛了,bless all. Revenge of Fibonacci Time Limit: 10000/5000 MS ...

用PL0语言求Fibonacci数列前m个中偶数位的数

程序说明:求Fibonacci数列前m个中偶数位的数: 这是编译原理作业,本打算写 求Fibonacci数列前m个数:写了半天,不会写,就放弃了: 程序代码如下: var n1,n2,m,i; pro ...

HDU 3117 Fibonacci Numbers(围绕四个租赁斐波那契,通过计&plus;&plus;乘坐高速动力矩阵)

HDU 3117 Fibonacci Numbers(斐波那契前后四位,打表+取对+矩阵高速幂) ACM 题目地址:HDU 3117 Fibonacci Numbers 题意:  求第n个斐波那契数的 ...

随机推荐

node、npm、gulp、bower、ionic下载及安装

node: http://nodejs.cn/ npm: 随node一起安装了 gulp: http://www.gulpjs.com.cn/docs/getting-started/ bower: ...

论python中的作用域

编程语言从早至今,可以分为面向过程编程.面向函数编程和面向对象编程.BASIC语言是典型的面向过程编程的语言,C语言支持面向函数编程,但不支持面向对象,JAVA只支持面向对象编程,python同时支持 ...

MD5加密类方法

package com.shkj.android.utils; import java.security.MessageDigest;import java.security.NoSuchAlgori ...

CPU affinity 进程和线程的亲缘性

设置Processor Affinity 作用: 1.进程和线程的亲缘性(affinity),使进程或线程在指定的CPU(核)上运行.(比如程序A,在第4个核心上运行) 2.设置进程 或者 线程, 使 ...

CSS权威指南学习笔记 —— 初步认识CSS

层叠样式表(Cascading Style Sheets,CSS)可以影响文档的表现.CSS是依附于文档的,如果不存在某种文档,CSS基本上是没有用的. 为什么会有CSS 在web早期(1990-19 ...

C&plus;&plus;运算符重载为非成员函数

#include using namespace std; class Complex{ public: Complex(double r=0.0,double i=0 ...

junit测试模板 unit-test

一个项目能否发布上线,重要的环节就是测试.经过集成测试.性能测试.压力测试等不断循环的测试过后依据测试报告来确定上线.这些由专业的测试人员来完成,因此会导致程序开发者对自身的单元测试的弱化.若在代码中 ...

Git - git status - 查看当前仓库状态

索引: 目录索引 参看代码 GitHub: git.txt 一.示例: git status 二.说明: 1."status" 部分 该命令可以查出当前分支文件变更状态, 可以查出 ...

Mybatis中 collection 和 association 的区别?

public class A{ private B b1; private List b2;} 在映射b1属性时用association标签,(一对一的关系) 映射b2时用colle ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值