zoukankan      html  css  js  c++  java
  • FZU 2036 Log Calculator

    思路:数学题!

    给定a,b,求s=log2(2a+2b);转化为s=b+log2(2a-b+1),(a>b).

    测试可以知道,当x>=32时,在精度范围内log2(2x+1)=x。否则将a-b转化为double类型直接计算。

    代码如下:

     1 import java.math.*;
     2 import java.math.BigDecimal;
     3 import java.util.*;
     4 public class Main {
     5     public static void main(String arg[]){
     6         BigDecimal a,b,c,x,y,z,d,an,ans;
     7         Scanner cin=new Scanner(System.in);
     8         int t=1,tt;
     9         tt=cin.nextInt();
    10         an=BigDecimal.valueOf(32);
    11         while(tt-->0){
    12             a=cin.nextBigDecimal();
    13             b=cin.nextBigDecimal();
    14             if(a.compareTo(b)>0){
    15                 c=a.subtract(b);
    16                 d=b;
    17                 ans=a;
    18             }else{
    19                 c=b.subtract(a);
    20                 d=a;
    21                 ans=b;
    22             }
    23             if(c.compareTo(an)<0){
    24                 double s=c.doubleValue();
    25                 s=Math.pow(2.0,s)+1;
    26                 s=Math.log(s)/Math.log(2.0);
    27                 ans=d;
    28                 ans=ans.add(BigDecimal.valueOf(s));
    29             }
    30             ans = ans.setScale(9, BigDecimal.ROUND_HALF_UP);
    31             System.out.println("Case "+t+": "+ans);
    32             t++;
    33         }
    34     }
    35 }
    View Code
  • 相关阅读:
    asp.net+Sqlserver 通过存储过程读取数据
    文字半透明显示在图片上
    饼形统计图
    折线统计图
    柱状统计图
    关于phonegap
    codesmith的使用
    asp.net读取Access数据库。
    Tomcat7.0安装配置
    freemarker数字格式化
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3353682.html
Copyright © 2011-2022 走看看