Dados dos números enteros L y R que denotan un rango, la tarea es encontrar la probabilidad de obtener un número cuadrado perfecto cuando se elige un número aleatorio en el rango L a R.
Ejemplos:
Entrada: L = 6, R = 20
Salida: 0,133333
Explicación:
Cuadrados perfectos en el rango [6, 20] = {9, 16} => 2 cuadrados perfectos
Números totales en el rango [6, 20] = 15
Probabilidad = 2 / 15 = 0,133333
Entrada: L = 16, R = 25
Salida: 0,2
Enfoque: la observación clave en este problema es que el recuento de los cuadrados perfectos en el rango de 0 a un número se puede calcular con las fórmulas dadas:
// El conteo de cuadrados perfectos en el rango de 0 a N se da como
Conteo de cuadrados perfectos = Floor(sqrt(N))
De manera similar, el recuento de cuadrados perfectos en el rango dado se puede calcular con la ayuda de las fórmulas anteriores de la siguiente manera:
Recuento de cuadrados perfectos[L, R] = piso (raíz cuadrada (R)) – techo (raíz cuadrada (L)) + 1
Números totales en el rango = R – L + 1
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation to find the // probability of getting a // perfect square number #include <bits/stdc++.h> using namespace std; // Function to return the probability // of getting a perfect square // number in a range float findProb(int l, int r) { // Count of perfect squares float countOfPS = floor(sqrt(r)) - ceil(sqrt(l)) + 1; // Total numbers in range l to r float total = r - l + 1; // Calculating probability float prob = (float)countOfPS / (float)total; return prob; } // Driver Code int main() { int L = 16, R = 25; cout << findProb(L, R); return 0; }
Java
// Java implementation to find the // probability of getting a // perfect square number class GFG{ // Function to return the probability // of getting a perfect square // number in a range static float findProb(int l, int r) { // Count of perfect squares float countOfPS = (float) (Math.floor(Math.sqrt(r)) - Math.ceil(Math.sqrt(l)) + 1); // Total numbers in range l to r float total = r - l + 1; // Calculating probability float prob = (float)countOfPS / (float)total; return prob; } // Driver Code public static void main(String[] args) { int L = 16, R = 25; System.out.print(findProb(L, R)); } } // This code is contributed by Amit Katiyar
Python3
# Python3 implementation to find # the probability of getting a # perfect square number import math # Function to return the probability # of getting a perfect square # number in a range def findProb(l, r): # Count of perfect squares countOfPS = (math.floor(math.sqrt(r)) - math.ceil(math.sqrt(l)) + 1) # Total numbers in range l to r total = r - l + 1 # Calculating probability prob = countOfPS / total return prob # Driver code if __name__=='__main__': L = 16 R = 25 print(findProb(L, R)) # This code is contributed by rutvik_56
C#
// C# implementation to find the probability // of getting a perfect square number using System; class GFG{ // Function to return the probability // of getting a perfect square // number in a range static float findProb(int l, int r) { // Count of perfect squares float countOfPS = (float)(Math.Floor(Math.Sqrt(r)) - Math.Ceiling(Math.Sqrt(l)) + 1); // Total numbers in range l to r float total = r - l + 1; // Calculating probability float prob = (float)countOfPS / (float)total; return prob; } // Driver Code public static void Main(String[] args) { int L = 16, R = 25; Console.Write(findProb(L, R)); } } // This code is contributed by Amit Katiyar
Javascript
<script> // Javascript implementation to find the // probability of getting a // perfect square number // Function to return the probability // of getting a perfect square // number in a range function findProb(l, r) { // Count of perfect squares var countOfPS = (Math.floor(Math.sqrt(r)) - Math.ceil(Math.sqrt(l)) + 1); // Total numbers in range l to r var total = r - l + 1; // Calculating probability var prob = countOfPS / total; return prob; } // Driver code var L = 16, R = 25; // Function Call document.write(findProb(L, R)); // This code is contributed by Khushboogoyal499 </script>
0.2
Complejidad de tiempo: O(1)