Рубрики

Проверьте, возможен ли прямой треугольник из данной области и гипотенузы

Учитывая область и гипотенузу, цель состоит в том, чтобы напечатать все стороны, если может существовать прямоугольный треугольник, иначе выведите -1. Нам нужно распечатать все стороны в порядке возрастания.

Примеры:

Input  : 6 5
Output : 3 4 5

Input  : 10 6
Output : -1

Мы обсудили решение этой проблемы в следующем посте.
Найти все стороны прямоугольного треугольника от данной гипотенузы и области | Комплект 1

В этом посте обсуждается новое решение с логикой ниже.

Пусть две неизвестные стороны будут а и б
Площадь: A = 0,5 * a * b
Площадь гипотенузы: H ^ 2 = a ^ 2 + b ^ 2
Подставляя b, получаем H 2 = a 2 + (4 * A 2 ) / a 2
При переупорядочении получаем уравнение a 4 — (H 2 ) (a 2 ) + 4 * (A 2 )

Дискриминант D этого уравнения будет D = H 4 — 16 * (A 2 )
Если D = 0, то корни задаются формулой линейного уравнения: root = (-b + — sqrt (D)) / 2 * a
эти корни были бы равны квадрату сторон, нахождение квадратных корней дало бы нам стороны.

C ++

// C ++ программа для проверки существования
// прямоугольный треугольник.
#include <bits/stdc++.h>

using namespace std;

  
// Печатает три стороны правого треугольника
// из заданной области и гипотенузы, если треугольник
// возможно, иначе выдает -1.

void findRightAngle(int A, int H) 

{

    // Дескриминант уравнения

    long D = pow(H, 4) - 16 * A * A;

      

    if (D >= 0) 

    {

        // применяем линейное уравнение

        // формула, чтобы найти оба корня

        long root1 = (H * H + sqrt(D)) / 2;

        long root2 = (H * H - sqrt(D)) / 2;

      

        long a = sqrt(root1);

        long b = sqrt(root2);

          

        if (b >= a)

        cout << a << " " << b << " " << H;

        else

        cout << b << " " << a << " " << H;

    }

    else

        cout << "-1";

}

  
// Код драйвера

int main() 

{

    findRightAngle(6, 5); 

      
}

  
// Этот код предоставлен Anant Agarwal.

Джава

// Java-программа для проверки существования
// прямоугольный треугольник.

  

class GFG {

      

    // Печатает три стороны правого треугольника

    // из заданной области и гипотенузы, если треугольник

    // возможно, иначе выдает -1.

    static void findRightAngle(double A, double H) 

    {

        // Дескриминант уравнения

        double D = Math.pow(H, 4) - 16 * A * A;

          

        if (D >= 0)

        {

            // применяем линейное уравнение

            // формула, чтобы найти оба корня

            double root1 = (H * H + Math.sqrt(D)) / 2;

            double root2 = (H * H - Math.sqrt(D)) / 2;

          

            double a = Math.sqrt(root1);

            double b = Math.sqrt(root2);

            if (b >= a)

                System.out.print(a + " " + b + " " + H);

            else

                System.out.print(b + " " + a + " " + H);

        

        else

            System.out.print("-1");

    }

      

    // Код драйвера

    public static void main(String arg[]) 

    {

        findRightAngle(6, 5);

    }

}

  
// Этот код предоставлен Anant Agarwal.

питон

# Программа Python для проверки существования
# прямоугольный треугольник.

from math import sqrt

  
# Печать трех сторон правого треугольника
# из заданной области и гипотенузы, если треугольник
# возможно, иначе выдает -1.

def findRightAngle(A, H):

  

    # Дескриминант уравнения

    D = pow(H,4) - 16 * A * A

    if D >= 0:

  

        # применение линейного уравнения

        # формула, чтобы найти оба корня

        root1 = (H * H + sqrt(D))/2

        root2 = (H * H - sqrt(D))/2

  

        a = sqrt(root1)

        b = sqrt(root2)

        if b >= a:

            print a, b, H

        else:

            print b, a, H

    else:

        print "-1"

  
# Код драйвера
# Площадь 6 и гипотенуза 5.

findRightAngle(6, 5)

C #

// C # программа для проверки существования
// прямоугольный треугольник.

using System;

  

class GFG {

  

    // Печатает три стороны правого треугольника

    // из заданной области и гипотенузы, если треугольник

    // возможно, иначе выдает -1.

    static void findRightAngle(double A, double H)

    {

          

        // Дескриминант уравнения

        double D = Math.Pow(H, 4) - 16 * A * A;

  

        if (D >= 0) {

              

            // применяем линейное уравнение

            // формула, чтобы найти оба корня

            double root1 = (H * H + Math.Sqrt(D)) / 2;

            double root2 = (H * H - Math.Sqrt(D)) / 2;

  

            double a = Math.Sqrt(root1);

            double b = Math.Sqrt(root2);

              

            if (b >= a)

                Console.WriteLine(a + " " + b + " " + H);

            else

                Console.WriteLine(b + " " + a + " " + H);

        }

        else

            Console.WriteLine("-1");

    }

  

    // Код драйвера

    public static void Main()

    {

        findRightAngle(6, 5);

    }

}

  
// Этот код предоставлен vt_m.

PHP

<?php
// PHP программа для проверки существования
// прямоугольный треугольник.

  
// Печатает три стороны правого треугольника
// из данной области и гипотенузы, если
// возможен треугольник, иначе выведите -1.

function findRightAngle($A, $H

{

      

    // Дескриминант уравнения

    $D = pow($H, 4) - 16 * $A * $A;

      

    if ($D >= 0) 

    {

          

        // применяем линейное уравнение

        // формула, чтобы найти оба корня

        $root1 = ($H * $H + sqrt($D)) / 2;

        $root2 = ($H * $H - sqrt($D)) / 2;

      

        $a = sqrt($root1);

        $b = sqrt($root2);

          

        if ($b >= $a)

            echo $a , " ", $b , " " , $H;

        else

        echo $b , " " , $a , " " , $H;

    }

    else

        echo "-1";

}

  

    // Код драйвера

    findRightAngle(6, 5); 

      
// Этот код предоставлен Anuj_67
?>


Выход:

3 4 5

Эта статья предоставлена Харшитом Агравалом . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Проверьте, возможен ли прямой треугольник из данной области и гипотенузы

0.00 (0%) 0 votes