Dado un rango de números [l, r] y un número entero q. La tarea es contar todos esos números en el rango dado de modo que ningún dígito del número coincida con ningún dígito en su producto con el número dado q.
Ejemplos :
Input : l = 10, r = 12, q = 2 Output : 1 10*2 = 20 which has 0 as same digit 12*2 = 24 which as 2 as same digit 11*2 = 22 no same digit Input : l = 5, r = 15, q = 2 Output : 9
Fuente : Goldman Sachs Entrevista conjunto 46
La idea es ejecutar un bucle de l a r para generar todos los números en el rango y convertir cada número n y su producto con q, es decir, n*q en strings usando el método to_string() y luego verifique si algún carácter en string2 está presente en string1 o no usa hash de string básico.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for above approach #include <bits/stdc++.h> using namespace std; // Function to check if all of the digits // in a number and it's product with q // are unequal or not bool checkIfUnequal(int n, int q) { // convert first number into string string s1 = to_string(n); int a[26] = { 0 }; // Insert elements from 1st number // to hash for (int i = 0; i < s1.size(); i++) a[s1[i] - '0']++; // Calculate corresponding product int prod = n * q; // Convert the product to string string s2 = to_string(prod); // Using the hash check if any digit of // product matches with the digits of // input number for (int i = 0; i < s2.size(); i++) { // If yes, return false if (a[s2[i] - '0']) return false; } // Return true return true; } // Function to count numbers in the range [l, r] // such that all of the digits of the number and // it's product with q are unequal int countInRange(int l, int r, int q) { int count = 0; for (int i = l; i <= r; i++) { // check for every number between l and r if (checkIfUnequal(i, q)) count++; } return count; } // Driver Code int main() { int l = 10, r = 12, q = 2; // Function Call cout << countInRange(l, r, q); return 0; }
Java
// Java program for above approach class GfG { // Function to check if all of the digits // in a number and it's product with q // are unequal or not static boolean checkIfUnequal(int n, int q) { // convert first number into string String s1 = Integer.toString(n); int a[] = new int[26]; // Insert elements from 1st number // to hash for (int i = 0; i < s1.length(); i++) a[s1.charAt(i) - '0']++; // Calculate corresponding product int prod = n * q; // Convert the product to string String s2 = Integer.toString(prod); // Using the hash check if any digit of // product matches with the digits of // input number for (int i = 0; i < s2.length(); i++) { // If yes, return false if (a[s2.charAt(i) - '0'] > 0) return false; } // else, return true return true; } // Function to count numbers in the range [l, r] // such that all of the digits of the number and // it's product with q are unequal static int countInRange(int l, int r, int q) { int count = 0; for (int i = l; i <= r; i++) { // check for every number between l and r if (checkIfUnequal(i, q)) count++; } return count; } // Driver Code public static void main(String[] args) { int l = 10, r = 12, q = 2; // Function Call System.out.println(countInRange(l, r, q)); } }
Python3
# Python 3 program for above approach # Function to check if all of the digits # in a number and it's product with q # are unequal or not def checkIfUnequal(n, q): # convert first number into string s1 = str(n) a = [0 for i in range(26)] # Insert elements from 1st number # to hash for i in range(0, len(s1), 1): a[ord(s1[i]) - ord('0')] += 1 # Calculate corresponding product prod = n * q # Convert the product to string s2 = str(prod) # Using the hash check if any digit of # product matches with the digits of # input number for i in range(0, len(s2), 1): # If yes, return false if (a[ord(s2[i]) - ord('0')]): return False # Return true return True # Function to count numbers in the range [l, r] # such that all of the digits of the number and # it's product with q are unequal def countInRange(l, r, q): count = 0 for i in range(l, r + 1, 1): # check for every number between l and r if (checkIfUnequal(i, q)): count += 1 return count # Driver Code if __name__ == '__main__': l = 10 r = 12 q = 2 # Function call print(countInRange(l, r, q)) # This code is contributed by # Sahil_Shelangia
C#
// C# program for above approach using System; class GfG { // Function to check if all of the digits // in a number and it's product with q // are unequal or not static bool checkIfUnequal(int n, int q) { // convert first number into string string s1 = n.ToString(); int[] a = new int[26]; // Insert elements from 1st number // to hash for (int i = 0; i < s1.Length; i++) a[s1[i] - '0']++; // Calculate corresponding product int prod = n * q; // Convert the product to string string s2 = prod.ToString(); // Using the hash check if any digit of // product matches with the digits of // input number for (int i = 0; i < s2.Length; i++) { // If yes, return false if (a[s2[i] - '0']) return false; } // Else, return true return true; } // Function to count numbers in the range [l, r] // such that all of the digits of the number and // it's product with q are unequal static int countInRange(int l, int r, int q) { int count = 0; for (int i = l; i <= r; i++) { // check for every number between l and r if (checkIfUnequal(i, q)) count++; } return count; } // Driver Code public static void Main() { int l = 10, r = 12, q = 2; // Function call Console.WriteLine(countInRange(l, r, q)); } } // This code is contributed bt Archana_kumari
PHP
// PHP program for above code // Function to check if all of the digits // in a number and it's product with q // are unequal or not function checkIfUnequal($n, $q) { // convert first number into string $s1 = strval($n); $a = array_fill(0, 26, NULL); // Insert elements from 1st number // to hash for ($i = 0; $i < strlen($s1); $i++) $a[ord($s1[$i]) - ord('0')]++; // Calculate corresponding product $prod = $n * $q; // Convert the product to string $s2 = strval($prod); // Using the hash check if any digit of // product matches with the digits of // input number for ($i = 0; $i < strlen($s2); $i++) { // If yes, return false if ($a[ord($s2[$i]) - ord('0')]) return false; } // Else, return true return true; } // Function to count numbers in the range // [l, r] such that all of the digits of the // number and it's product with q are unequal function countInRange($l, $r, $q) { $count = 0; for ($i = $l; $i <= $r; $i++) { // check for every number between l and r if (checkIfUnequal($i, $q)) $count++; } return $count; } // Driver Code $l = 10; $r = 12; $q = 2; // Function call echo countInRange($l, $r, $q); // This code is contributed by ita_c ?>
Javascript
<script> // Javascript program for above approach // Function to check if all of the digits // in a number and it's product with q // are unequal or not function checkIfUnequal(n,q) { // convert first number into string let s1 = n.toString(); let a = new Array(26); for(let i = 0; i < a.length; i++) { a[i] = 0; } // Insert elements from 1st number // to hash for (let i = 0; i < s1.length; i++) a[s1[i].charCodeAt(0) - '0'.charCodeAt(0)]++; // Calculate corresponding product let prod = n * q; // Convert the product to string let s2 = prod.toString(); // Using the hash check if any digit of // product matches with the digits of // input number for (let i = 0; i < s2.length; i++) { // If yes, return false if (a[s2[i].charCodeAt(0) - '0'.charCodeAt(0)] > 0) return false; } // else, return true return true; } // Function to count numbers in the range [l, r] // such that all of the digits of the number and // it's product with q are unequal function countInRange(l,r,q) { let count = 0; for (let i = l; i <= r; i++) { // check for every number between l and r if (checkIfUnequal(i, q)) count++; } return count; } // Driver Code let l = 10, r = 12, q = 2; // Function Call document.write(countInRange(l, r, q)); // This code is contributed by avanitrachhadiya2155 </script>
1
Publicación traducida automáticamente
Artículo escrito por Kushdeep_Mittal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA