Comprobar si dos números están en proporción plateada

Dados dos números A y B , la tarea es verificar que A y B estén en proporción de plata.

Proporción de plata: se dice que dos números están en proporción de plata si la razón de la suma del número más pequeño y el doble del número más grande al número más grande es la misma que la razón del más grande al más pequeño. A continuación se muestra la representación de la proporción de plata:

\frac{2*A+B}{A} = \frac{A}{B} = \delta_{\varsigma} = {1+ \sqrt{2}} = 2.414
 

para A > 0, B > 0

 

Ejemplos:

Entrada: A = 2.414, B = 1 
Salida: Sí 
Explicación:

\frac{A}{B} = 2.414 \;\;\text{as well as}\;\; \frac{2*A + B}{A} = \frac{2.414}{1} = 2.414
 

Entrada: A = 1, B = 0,414 
Salida No 
Explicación: la proporción de A a B no forma una proporción áurea

 

Planteamiento: La idea es encontrar dos razones y verificar si son iguales a la razón de plata (2.414).

// Here A denotes the larger number
\frac{A}{B} = \frac{2*A + B}{A} = 2.414

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ implementation to check
// whether two numbers are in
// silver ratio with each other
#include<bits/stdc++.h>
using namespace std;
 
// Function to check that two
// numbers are in silver ratio
bool checksilverRatio(float a, float b)
{
     
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if(a < b)
        swap(a, b);
     
    // First Ratio
    float ratio1 = ((a / b) * 1000.0) / 1000.0;
     
    // Second Ratio
    float ratio2 = (int)(((2 * a + b) /
                          a) * 1000);
    ratio2 = ratio2 / 1000;
     
    // Condition to check that two
    // numbers are in silver ratio
    if (ratio1 == ratio2 &&
       (int)(ratio1 - 2.414) == 0)
    {
        cout << "Yes\n";
        return true;
    }
    else
    {
        cout << "No\n";
        return false;
    }
}
 
// Driver Code
int main()
{
    float a = 2.414;
    float b = 1;
     
    // Function call
    checksilverRatio(a, b);
}
 
// This code is contributed by ishayadav181

Java

// Java implementation to check
// whether two numbers are in
// silver ratio with each other
import java.util.*;
import java.lang.*;
 
class GFG{
 
// Function to check that two
// numbers are in silver ratio
static boolean checksilverRatio(double a,
                                double b)
{
 
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if (a < b)
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }
 
    // First Ratio
    double ratio1 = ((a / b) * 1000) / 1000;
 
    // Second Ratio
    double ratio2 = (int)(((2 * a + b) /
                           a) * 1000);
    ratio2 = ratio2 / 1000;
 
    // Condition to check that two
    // numbers are in silver ratio
    if (ratio1 == ratio2 &&
       (int)(ratio1 - 2.414) == 0)
    {
        System.out.println("Yes");
        return true;
    }
    else
    {
        System.out.println("No");
        return false;
    }
}
 
// Driver Code
public static void main(String[] args)
{
    double a = 2.414;
    double b = 1;
 
    // Function call
    checksilverRatio(a, b);
}
}
 
// This code is contributed by jana_sayantan

Python3

# Python3 implementation to check
# whether two numbers are in
# silver ratio with each other
 
# Function to check that two
# numbers are in silver ratio
def checksilverRatio(a, b):
     
    # Swapping the numbers such
    # that A contains the maximum
    # number between these numbers
    a, b = max(a, b), min(a, b)
     
    # First Ratio
    ratio1 = round(a / b, 3)
     
    # Second Ratio
    ratio2 = round((2 * a + b)/a, 3)
    # Condition to check that two
    # numbers are in silver ratio
    if ratio1 == ratio2 and\
       ratio1 == 2.414:
        print("Yes")
        return True
    else:
        print("No")
        return False
         
# Driver Code
if __name__ == "__main__":
    a = 2.414
    b = 1
     
    # Function Call
    checksilverRatio(a, b)

C#

// C# implementation to check
// whether two numbers are in
// silver ratio with each other
using System;
 
class GFG{
 
// Function to check that two
// numbers are in silver ratio
static bool checksilverRatio(double a,
                             double b)
{
 
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if (a < b)
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }
 
    // First Ratio
    double ratio1 = ((a / b) * 1000) / 1000;
 
    // Second Ratio
    double ratio2 = (int)(((2 * a + b) /
                        a) * 1000);
    ratio2 = ratio2 / 1000;
 
    // Condition to check that two
    // numbers are in silver ratio
    if (ratio1 == ratio2 &&
       (int)(ratio1 - 2.414) == 0)
    {
        Console.WriteLine("Yes");
        return true;
    }
    else
    {
        Console.WriteLine("No");
        return false;
    }
}
 
// Driver Code
public static void Main()
{
    double a = 2.414;
    double b = 1;
 
    // Function call
    checksilverRatio(a, b);
}
}
 
// This code is contributed by sanjoy_62

Javascript

<script>
 
// Javascript Program to check
// whether two numbers are in
// silver ratio with each other
 
// Function to check that two
// numbers are in silver ratio
function checksilverRatio(a, b)
{
   
    // Swapping the numbers such
    // that A contains the maximum
    // number between these numbers
    if (a < b)
    {
        a = a + b;
        b = a - b;
        a = a - b;
    }
   
    // First Ratio
    let ratio1 = ((a / b) * 1000) / 1000;
   
    // Second Ratio
    let ratio2 = Math.floor(((2 * a + b) /
                           a) * 1000);
    ratio2 = ratio2 / 1000;
   
    // Condition to check that two
    // numbers are in silver ratio
    if (ratio1 == ratio2 &&
       (ratio1 - 2.414) == 0)
    {
        document.write("Yes");
        return true;
    }
    else
    {
        document.write("No");
        return false;
    }
}
 
// Driver Code
  let a = 2.414;
    let b = 1;
   
    // Function call
    checksilverRatio(a, b);
     
    // This code is contributed by chinmoy1997pal.
</script>
Producción: 

Yes

Referencias: https://en.wikipedia.org/wiki/Silver_ratio
 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por spp____ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *