zoukankan      html  css  js  c++  java
  • 无线网络覆盖-java中,用Math.sqrt()时,必须要注意小数问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:3
    描述

    我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学。

    现在学校给了他一个机会,因此他要购买很多的无线路由。现在他正在部署某条大道的网络,而学校只允许把他的无线路由器放在路的正中间。我们默认这条大道是笔直的并且它在任何地方的宽度都一样。并且所有的路由器的覆盖面积是相同的。现在乐乐计算出这条大道的长和宽,以及路由器的覆盖半径,想请你帮忙,帮他计算出他最少要购买的路由器的数量。

    注意:为了防止某种干扰,两台无线路由之间的最小距离不能小于1米

    图1中为一条矩形的道路,中间的虚线代表中线。图2为最小覆盖的示意图。

    输入
    输入包括多组测试数据
    第一部分:一个整数T(1<=T<=500)
    第二部分:一共T行,每行包括三个整数L,D,R代表路的长,宽和覆盖半径(米)。
    (1<=L<=100000),(1<=D<=50),(1<=R<=200)。
    输出
    对于每组测试数据输出各占一行,只有一个整数,表示最少的路由器数量。如果不能覆盖,请输出impossible
    样例输入
    2
    40 6 5
    40 10 5
    样例输出
    5
    impossible


    代码实现如下:

    package package111;

    import java.util.Arrays;
    import java.util.Scanner;

    public class Main
    {
        public static void main(String []args)
        {
            Scanner cin = new Scanner(System.in);
            int T;
            T = cin.nextInt();
            int L,D,R;
            for(int i = 0 ; i < T ; i++)
            {
                L = cin.nextInt();
                D = cin.nextInt();
                R = cin.nextInt();
                Print(L,D,R);
            }
        }
        static void Print(int L,int D,int R)
        {
            if(R*2 <= D)
            {
                System.out.print("impossible" + " ");
                return;
            }
            double sum = Math.sqrt((R*R*1.0)-D*D*1.0/4);//这里才是重点,必须乘1.0,不然小数部分计算,肯定会出错
            if(sum < 0.5)
            {
                System.out.print("impossible" + " ");
                return;
            }
            sum = sum*2;
            double cnt = L*1.0/sum;
            int a = (int)cnt;
            if(cnt - a > 0)
            {
                a++;
            }
            System.out.print(a + " ");
        }
    }

  • 相关阅读:
    ASCII码详解
    C#中判断上传类型为Excel,03和07版的链接字符串
    文本搜索工具的制作过程之搜索
    文本搜索工具之显示
    用C#实现十六进制字符串转换为ASCII
    7个秘诀 工作效率和薪水都翻倍
    C#委托
    VB的写法,关于版本写入注册表
    k8s 集群灾难恢复 k8s
    k8s 接合阿里云负载均衡 k8s
  • 原文地址:https://www.cnblogs.com/674001396long/p/9700338.html
Copyright © 2011-2022 走看看