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:
para A > 0, B > 0
Ejemplos:
Entrada: A = 2.414, B = 1
Salida: Sí
Explicación:
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
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>
Yes
Referencias: https://en.wikipedia.org/wiki/Silver_ratio
Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)