首页 > 其他 > 详细

HDU 1568

时间:2016-01-24 23:50:54      阅读:162      评论:0      收藏:0      [点我收藏+]

- - 我自己开始以为是数值范围是1到100000000.... 搞了半天才发现是斐波那契数列的项数1到100000000

坑爹、!!

不会,只能看网上大牛的题解、

 

具体解释请看:http://www.cnblogs.com/Yu2012/archive/2011/10/09/2199156.html

 

#include<iostream>
#include<cmath>
#include<cstdio> 
using namespace std;
const double s = (sqrt(5.0)+1.0)/2;
int main()
{
    int n,i;
    double bit;
    int fac[21] = { 0 , 1 };
    for(i = 2; i < 21; i++) 
        fac[i] = fac[i-1] + fac [i-2];
    while(cin >> n)
    {
        if(n <= 20) {
            cout << fac[n] << endl;
            continue;
        }
        else{
            bit = -0.5*log(5.0)/log(10.0)+((double)n)*log(s)/log(10.0);//调用公式 
            bit = bit - floor(bit); //取小数部分└(^o^)┘ 
            bit = pow(10.0,bit); 
            while(bit < 1000) //要求四位,所以要将小数点右边的数移到左边直到符合要求 
                bit = 10.0 * bit; 
            cout << (int)bit << endl;    
        }
    }
    return 0;
}

 

 

 

HDU 1568

原文:http://www.cnblogs.com/sasuke-/p/5156128.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!