Codechef: если данная гипотенуза и область могут образовывать прямоугольный треугольник - PullRequest
0 голосов
/ 30 марта 2020

Ссылка на проблему: https://www.codechef.com/problems/RIGHTTRI Я не знаю, почему при использовании свойства неравенства треугольника код дает неправильные ответы. Я не понимаю, почему при использовании этого свойства, он дает неправильный ответ. Вот фрагмент моего кода:

    for(int i=0;i<t;i++)
    {
        double h=0;
        if(sc.hasNext())
        {
            h=sc.nextDouble();
        }
        double s=0;
        {
            s=sc.nextDouble();

        }
        double side1=0;
        double side2=0;
        if(h*h*h*h>=16*s*s)
        {
         side1=Math.sqrt((h*h+Math.sqrt(h*h*h*h-16*s*s))/2);
          side2=Math.sqrt((h*h-Math.sqrt(h*h*h*h-16*s*s))/2);
        }
        //to print up to given decimal digits DecimalFormat df = new DecimalFormat("###.######");
        if(side1+side2>h&&h+side2>side1) //*************problem is here I guess***************
        {
            System.out.println(df.format(side2)+" "+df.format(side1)+" "+df.format(h));
        }
        else{
            System.out.println("-1");
        }
    }

}}

См. "************* проблема здесь, я думаю, ************* ** "строка в коде. Он отлично работает при использовании условия, необходимого для sqrt, т. Е. H ^ 4> = 16s ^ 2 в блоке if, и прекрасно работает, когда я ставлю это условие: side1 == h и side2 == 0, но как может быть сторона треугольника? нуль. Заранее спасибо за помощь :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...