题意:

     就是求斐波那契数,但是只要求输出前四位,(n<=100000000)。

思路:

     这个要用到斐波那契的公式和一些log的规律,直接打看着很乱,直接在网上偷张图片吧:     

然后就是一些log的性质

log10(a^b) = b * log10(a),log10(a*b) = log10(a) + log10(b)

我们可以根据这个把大数的前几位拿出来,这样:

log10(1234567890) 

= log10(1.234567890 * 10^9) 

= log10(1.234567890) + 9

这样我们就得到了一个"小数部分"bit = log10(1.234567890)

然后pow(10.0 ,bit) = 1.234567890

这样我们就得到了一个大数的科学技术法的前边部分,想要四位,直接*1000取整就行了。

#include<stdio.h>
#include<math.h>

int
num[25];
void
ini()
{

num[0] = 0 ,num[1] = 1;
for(int
i = 2 ;i <= 20 ;i ++)
num[i] = num[i-1] + num[i-2]; } int main ()
{

ini();
int
n;
while(~
scanf("%d" ,&n))
{
if(
n <= 20)
{

printf("%d\n" ,num[n]);
continue;
}
double
now = -0.5 * log10 (5.0) + n * 1.0 * log10((1+sqrt(5.0))/2.0);
double
bit = now - (int)now;
double
a = pow(10.0,bit);
a *= 1000;
printf("%d\n" ,int(a));
}
return
0;
}


最新文章

  1. Android中利用AIDL机制调用远程服务
  2. css3属性flex弹性布局设置三列(四列)分布样式
  3. 在 NetBeans IDE 6.0 中分析 Java 应用程序性能
  4. C++学习基础十——子类构造函数与析构函数的执行
  5. webServer xampp的安装及使用
  6. Eclipse控制台中文乱码
  7. VC++大数据量绘图时无闪烁刷屏技术实现(我的理解是,在内存上作画,然后手动显示,而不再直接需要经过WM_PAINT来处理了)
  8. 《图解HTTP》 第11章 web的攻击技术
  9. gauge.js的应用
  10. C# webservice开发
  11. Code Forces 448C Painting Fence 贪婪的递归
  12. 后端数据库使用 Bomb方案
  13. 关于canvas画布使用fillRect()时高度出现双倍效果解决办法
  14. slice、splice与split傻傻分不清
  15. PHP秒杀系统 高并发高性能的极致挑战(完整版)
  16. JAVA中的糕富帅技术——反射(一)
  17. 【zheng环境准备】安装activemq
  18. 转:cookie.setPath()用法
  19. oracle--分组后获取每组数据第一条数据
  20. 2016-3-19日小结:scrollTop

热门文章

  1. LeetCode-133克隆图(图的遍历+深拷贝概念)
  2. C# webapi跨域
  3. FreeBSD 包管理器设计简介
  4. java重写toString()方法
  5. 从两个模型带你了解DAOS 分布式异步对象存储
  6. Android Studio配置colors.xml
  7. java进阶(38)--线程安全
  8. istio服务条目(ServiceEntry)介绍
  9. kubernetes:基于ab的压力测试
  10. SqlServer游标的创建与使用