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

tmp=(log(sq5/5)+n*log(0.5+sq5/2))/log(10.0)

然而为什么要取log呢,考虑这样的情况,若结果前四位为1493,那么计算的结果一定是log(10^n*1.493……)=log(1.493……)+n,那么只要减去整数部分,就得到log(1.493……),

将结果加3,得到log(1.493……)+3=log(1493.……),然后计算一下10的幂后取整就是结果了。

#include <cstdio>
#include <cmath>
using namespace std;
int main(){
int fib[100],fibs;
fib[0]=0,fib[1]=1;
for(fibs=2;fib[fibs-1]<10000;fibs++)fib[fibs]=fib[fibs-1]+fib[fibs-2];
fibs-=2;
int n;
double sq5=sqrt(5);
while(scanf("%d",&n)!=EOF){
if(n<=fibs)printf("%d\n",fib[n]);
else{
double tmp=(log(sq5/5)+n*log(0.5+sq5/2))/log(10.0);
tmp=tmp-int(tmp);
printf("%d\n",(int)pow(10,tmp+3));
}
}
return 0;
}

最新文章

  1. 正确制作一个iframe,认识iframe
  2. WebService -- Java 实现之 CXF ( 使用Spring添加拦截器)
  3. URL和URI区别
  4. paip.gui控件form窗体的原理实现以及easyui的新建以及编辑实现
  5. 1.Oracle数据库概述
  6. 【转】SharePoint工作流中常用的方法
  7. myeclipse使用SVN团队开发
  8. Aptana jQuery自动提示
  9. Java 多线程详解(一)------概念的引入
  10. delphi 数组复制利用CopyMemory 最为完美
  11. css中的em 简单教程 -- 转
  12. 【Android 应用开发】 Fragment 详解
  13. Elasticsearch【快速入门】
  14. ALL_SOURCE
  15. 常用的 jQuery 事件
  16. jenkins(3): jenkins执行shell命令
  17. Golang遇到的一些问题总结
  18. 问题1:设置了text-overflow : ellipsis未起作用
  19. iconfont阿里巴巴矢量图标库批量保存
  20. HttpFileCollection类

热门文章

  1. English - 英语学习小笔记
  2. apache-tomcat-7 设置最大上传.war文件大小[zhuan]
  3. UITextField 光标的位置设置获取
  4. Unity5UGUI 官方教程学习笔记(一)Canvas
  5. Csharp多态的实现(虚方法)
  6. Labview学习之波形图表的历史数据
  7. jQuery实时获取checkbox状态问题
  8. phpcms新增栏目字段_phpcms添加栏目属性
  9. php简单数据缓存类
  10. safari的调试工具