Dado un número entero N , la tarea es comprobar que N es un Número super-d.
Super-D Número es un número N tal que D*N D contiene una substring hecha de D dígitos que contienen solo D, donde D es mayor que 1 y menor que 10
Ejemplos:
Entrada: N = 261
Salida: Sí
Explicación:
Será cierto para D = 3
D*N D = 3*261 3 = 53338743
que contiene una substring compuesta por 3 dígitos 333 que contiene solo 3.
Entrada: N = 10
Salida: No
Enfoque: la idea es crear todas las strings posibles concatenando el dígito D, D varias veces y luego verificar si la concatenación está presente como una substring en D*N D o no, donde D estará en el rango [2, 9] .
A continuación se muestra la implementación del enfoque anterior:
Java
// Java implementation to // check if N is a super-d number class GFG{ // Function to check if N // is a super-d number static boolean isSuperdNum(int n) { for (int d = 2; d < 10; d++) { String subString = newString(d); if (String.valueOf( (d * Math.pow(n, d))).contains(subString)) return true; } return false; } // Driver Code private static String newString(int d) { String ans = ""; for (int i = 0; i < d; i++) { ans += String.valueOf(d); } return ans; } // Driver Code public static void main(String[] args) { int n = 261; if (isSuperdNum(n) == true) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed by Rajput-Ji
Python3
# Python3 implementation to # check if N is a super-d number # Function to check if N # is a super-d number def isSuperdNum(n): for d in range (2, 10): substring = str(d) * d; if substring in str(d * pow(n, d)): return True return False # Driver Code n = 261 if isSuperdNum(n) == True: print("Yes") else : print("No")
C#
// C# implementation to // check if N is a super-d number using System; class GFG{ // Function to check if N // is a super-d number static bool isSuperdNum(int n) { for(int d = 2; d < 10; d++) { String subString = newString(d); if (String.Join("", (d * Math.Pow(n, d))).Contains(subString)) return true; } return false; } private static String newString(int d) { String ans = ""; for(int i = 0; i < d; i++) { ans += String.Join("", d); } return ans; } // Driver Code public static void Main(String[] args) { int n = 261; if (isSuperdNum(n) == true) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This code is contributed by Rajput-Ji
Yes
Complejidad de tiempo: O(1)
Referencias: OEIS