当前位置:编程学习 > C/C++ >>

UVa 557 - Burger

做了这个题之后我才发现,对数是个极其好的东西

一开始我直接用公式暴力的,但是超出了浮点数范围,后来改成对数,但是超时了,我也很纠结,后来发现可以打表,然后打了表就过了

 

#include <stdio.h>   
#include <math.h>   
  
double L[100005];  
  
int main()  
{  
    int n;  
    double k;  
    L[0]=0;  
    for(double i=1;i<=100000;i++)  
        L[(int)i]=L[(int)i-1]+log2(i);  
    scanf("%d",&n);  
    while(n--)  
    {  
        scanf("%lf",&k);  
        double t=L[(int)k-2]-2*L[(int)k/2-1]-(k-2);  
        printf("%.4f\n",1-pow(2,t));  
    }  
    return 0;  
}  

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

double L[100005];

int main()
{
    int n;
    double k;
    L[0]=0;
    for(double i=1;i<=100000;i++)
        L[(int)i]=L[(int)i-1]+log2(i);
    scanf("%d",&n);
    while(n--)
    {
        scanf("%lf",&k);
        double t=L[(int)k-2]-2*L[(int)k/2-1]-(k-2);
        printf("%.4f\n",1-pow(2,t));
    }
    return 0;
}


 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,