题意:

     就是求斐波那契数,但是只要求输出前四位,(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;
}


hdu1568斐波那契前4位的更多相关文章

  1. hdu3117 斐波那契前后4位

    题意:       求斐波那契的前后4位,n <= 10^8. 思路:       至于前四位,和hdu1568的求法一样:       http://blog.csdn.net/u013761 ...

  2. AcWing 1303. 斐波那契前 n 项和

    输出斐波那契数列前 n 项和 对m取摸的结果 #include<bits/stdc++.h> #define LL long long #define N 3 using namespac ...

  3. HDU 1568 快速求斐波那契前四位

    思路: 把斐波那契通项公式转化成log的形式,高中数学... //By SiriusRen #include <bits/stdc++.h> using namespace std; ], ...

  4. HDU1568斐波那契推理

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

  5. The sum - SGU 122(斐波那契前N项和)

    直接上代码....... ======================================================================================= ...

  6. HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】

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

  7. hdu1568&&hdu3117 求斐波那契数前四位和后四位

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 题意:如标题所示,求斐波那契数前四位,不足四位直接输出答案 斐波那契数列通式: 当n<=2 ...

  8. Python基础(二):斐波那契数列、模拟cp操作、生成8位随机密码

    一.斐波那契数列 目标: 编写fib.py脚本,主要要求如下: 输出具有10个数字的斐波那契数列 使用for循环和range函数完成 改进程序,要求用户输入一个数字,可以生成用户需要长度的斐波那契数列 ...

  9. hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)

    解题思路: 一只母猪生下第二头后立马被杀掉,可以这样想即,生下第二头便被杀掉,可以看成母猪数量没变 第一天 1 第二天 2 第三天 3 :第一头生第二头后杀掉还是1头,第二头再加上第二头生下的,一共三 ...

随机推荐

  1. Ubuntu小配置

    Ubuntu 拍摄快照 在虚拟机安装好.配置号后各拍摄一次快照,并存储. 可在虚拟机出错后回滚 Root用户 Ubuntu默认不能以 Root用户身份直接登录 因此,正常操作时在需要调用 root权限 ...

  2. Python——input与raw_input的区别

      区别一: raw_input():python2版本 input():python3版本 区别二: raw_input()不管是输数字还是字符串,结果都会以字符串的形式展现出来 input()则是 ...

  3. python学习之web中的html基础

     HTML简介及相关标签介绍 首先,我们要了解什么是HTML? HTML被称作超文本标记语言,是一门标记语言,即该语言由各类标记标签组成. 为什么学python要学HTML? 不管学习哪个语言,我们最 ...

  4. ListView解析

    ListView通过一个Adapter来完成数据和组件的绑定.以ListActivity为例,它集成自Activity,里面包含有一个ListAdapter和一个ListView.绑定的操作通过set ...

  5. k8s 日志收集之 EFK

    如今越来越多的应用部署在容器之中,如何收集日志也是一个很重要的问题.服务出问题了,排查问题需要给开发看日志.服务一般会在多个不同的 pod 中,一个一个的登进去看也的确不方便.业务数据统计也需要日志. ...

  6. HDU_3333 Turing Tree 【线段树 + 离散化】

    一.题目 Turing Tree 二.分析 这题主要还是在区间的处理上. 为了保证区间内的数没有重复的,那么可以对区间按右端点从小到大排序,这样对原数组处理时,尽量保证不重复的元素靠右(可以假设右端点 ...

  7. java面试记很多次还是记不住的问题

    1.java底层如何实现多态 https://blog.csdn.net/fan2012huan/article/details/51007517 (1)在常量池中找到方法调用的符号引用 (2)查看P ...

  8. exe取消动态基址

    动态基址开启后,在动态调试是想要和ida静态分析中的地址对应还要进行一步计算,取消动态基址便可以剩下很多时间. 只要修改pe文件头中的Characteristics低位置1 1 typedef str ...

  9. linux软件管理之yum管理操作软件包

    什么是rpm 1.1`RPM` 全称 `RedHat Package Manager` 缩写,由红帽开发用于软件包的安装.升级.卸载与查询. 1.2rpm包名组成部分 `RPM` 包命名以-将软件分成 ...

  10. 【linux】驱动-6-总线-设备-驱动

    目录 前言 6. 总线-设备-驱动 6.1 概念 6.2 工作原理 6.3 总线 6.3.1 总线介绍 6.3.2 注册总线 6.4 设备 6.4.1 设备介绍 6.4.2 设备注册.注销 6.5 驱 ...