zoukankan      html  css  js  c++  java
  • BNU Online Judge-34976-数细菌

    题目链接

    http://www.bnuoj.com/bnuoj/problem_show.php?pid=34976

    题目分析通过a b可以设x,y

    x+y=a    x+3*y=b  解出x,y,    x=(3*a-b)/2     y=(b-a)/2;

    x=(3*a-b)/2;             y=(b-a)/2;
    n1=(n-1)/2;              n2=n/2;

    n1 n2 分别为代表3的指数

    可以得出结果     s=log10(x*1.0*pow(3.0,n1)+y*1.0*pow(3.0,n2));

    如果这样写的话由于a,b,n过大会ni出需要进行变换

    因为n1==n2或n2-n1==1可以提出pow(3.0,n1),  log10(3的n1次)可改为n1*log10(3);

    那么就变成了

    if(n1==n2)
    {
           s=n1*log10(3.0)+log10(x+y);
    }
    else
    {
           s=n1*log10(3.0)+log10(x+3*y);
    }

    这样就达到目的了

    代码

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

    #define ll long long

    int main(void)
    {
    int t;
    ll a,b,n,n1,n2;
    ll x,y;
    scanf("%d",&t);
    while(t--)
    {
    double s=0;
    scanf("%lld%lld%lld",&a,&b,&n);
    x=(3*a-b)/2; y=(b-a)/2;
    n1=(n-1)/2; n2=n/2;
    if(n1==n2)
    {
    s=n1*log10(3.0)+log10(x+y);
    }
    else
    {
    s=n1*log10(3.0)+log10(x+3*y);
    }
    printf("%.10lf ",s);
    }
    return 0;
    }

  • 相关阅读:
    tensor张量
    Image Stride(内存图像行跨度)
    Batch Normalization
    论文阅读
    codeforces 520B
    codeforces 467B
    C语言位运算
    codeforces 474D
    codeforces 545c
    codeforces 698A
  • 原文地址:https://www.cnblogs.com/liudehao/p/4006391.html
Copyright © 2011-2022 走看看