zoukankan      html  css  js  c++  java
  • HDU 1586 log 的运用

     log函数的应用,因为

    log(a^b)=b*log(a);

    log(a*b)=log(a)+log(b);

    比如 log10(123456789)==log10(1.23456789)+8;

    log(1.23456789)是log(123456789)的小数部分。

    使用 pow()函数将其小数部分还原为1.23456789,然后就得到我们所求的 前4位了。

    代码:

    #include<cstdio>
    #include<string.h>
    #include<iostream>
    #include<cmath>
    using namespace std;
    int F[22];
    int main()
    {
        int k=0;
         double sum,n,m1,m2;
         F[0]=0;F[1]=1;
        for(int i=2;i<21;i++)
                F[i]=F[i-1]+F[i-2];
    
         m1=-0.5*log10(5);
    
         m2=log10((1+sqrt(5))/2);
         while(scanf("%lf",&n)==1)
         {
             k=n;
             if(n>20)
                {
             sum=m1+n*m2;
             k=sum;
             sum=sum-k;
             sum=pow(10.0,sum);
             while(sum<1000)sum=sum*10;
             k=sum;
             printf("%d
    ",k);
             }
             else printf("%d
    ",F[k]);
    
         }
    
        return 0;
    }
    


  • 相关阅读:
    我的期末可以加分项
    冲刺
    公司授课管理系统
    挑战赛题终于完成
    Java web 学习
    Java web 学习
    Javaweb 学习
    Base64加密
    选课系统
    Educational Codeforces Round 62题解
  • 原文地址:https://www.cnblogs.com/Opaser/p/3662050.html
Copyright © 2011-2022 走看看