码迷,mamicode.com
首页 > 其他好文 > 详细

BNUOJ34976数细菌

时间:2014-10-04 21:48:17      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   color   io   os   ar   java   

数细菌

1000ms
65536KB
Special Judge
64-bit integer IO format: %lld      Java class name: Main
Font Size:  
Type:   

小明发现了一种细菌,这种细菌会在分裂后的第2天重新分裂为3个细菌,即如果第一天有1个新分裂出来的细菌,则第2天还是有1个细菌,第3天会有3个新分裂出来的细菌,在第4天还是3个细菌,第5天会有9个细菌…已知培养皿里有若干这种细菌,第1天有a个细菌,第2天有b个细菌。小明想知道第n天时培养皿里会有多少个细菌。结果(ans)可能很大,只用输出log10(ans)即可。

Input

输入的第一行为一个整数T(T≤1000)表示数据组数。

每组数据一行三个数依次为a, b, n(1≤a,b,n≤1018)。

Output

对于每组数据,输出一个浮点数表示结果,误差在1e-6以内即可。

Sample Input

1
1 3 3

Sample Output

0.4771212547

Source

Author

temperlsyer
#include<stdio.h>
#include<math.h>
int main()
{
    int t;
    long long k1,k2,n,a,b;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld%lld",&a,&b,&n);
        long long ta=a,tb=b,mm;
        a=(tb-ta)/2;//第一天里的己经分裂后的第1天细胞数
        b=ta-a;//第一天里的新生细胞数
        k1=n/2;
        k2=(n-1)/2;
        if(k1==k2)mm=1;else mm=3;
        if(n>=3)
        printf("%.10lf\n",k2*log10(3.0)+log10((double)(a*mm+b)));//log里面的相乘等于相加
        else if(n==1)
        printf("%.10lf\n",log10((double)(ta*1.0)));
        else if(n==2)
        printf("%.10lf\n",log10((double)(tb*1.0)));
    }
}


BNUOJ34976数细菌

标签:des   style   blog   http   color   io   os   ar   java   

原文地址:http://blog.csdn.net/u010372095/article/details/39781277

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!