Dado un número entero n , la tarea es verificar si n es un número de Dudeney o no. Un número de Dudeney es un entero positivo que es un cubo perfecto tal que la suma de sus dígitos decimales es igual a la raíz cúbica del número.
Ejemplos:
Entrada: N = 19683
Salida: Si
19683 = 27 3 y 1 + 9 + 6 + 8 + 3 = 27Entrada: N = 75742
Salida: No
Acercarse:
- Comprueba si n es un cubo perfecto, si no, entonces no puede ser un número de Dudeney.
- Si n es un cubo perfecto, calcula la suma de sus dígitos. Si la suma de sus dígitos es igual a su raíz cúbica, entonces es un número de Dudeney, de lo contrario no lo es.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std; // Function that returns true if // n is a Dudeney number bool isDudeney(int n) { int cube_rt = int(round((pow(n, 1.0 / 3.0)))); // If n is not a perfect cube if (cube_rt * cube_rt * cube_rt != n) return false; int dig_sum = 0; int temp = n; while (temp > 0) { // Last digit int rem = temp % 10; // Update the digit sum dig_sum += rem; // Remove the last digit temp /= 10; } // If cube root of n is not equal to // the sum of its digits if (cube_rt != dig_sum) return false; return true; } // Driver code int main() { int n = 17576; if (isDudeney(n)) cout << "Yes"; else cout << "No"; return 0; }
Java
// Java implementation of the approach import java.lang.Math; class GFG { // Function that returns true if // n is a Dudeney number static boolean isDudeney(int n) { int cube_rt = (int)(Math.round((Math.pow(n, 1.0 / 3.0)))); // If n is not a perfect cube if (cube_rt * cube_rt * cube_rt != n) return false; int dig_sum = 0; int temp = n; while (temp > 0) { // Last digit int rem = temp % 10; // Update the digit sum dig_sum += rem; // Remove the last digit temp /= 10; } // If cube root of n is not equal to // the sum of its digits if (cube_rt != dig_sum) return false; return true; } // Driver code public static void main(String[] args) { int n = 17576; if (isDudeney(n)) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed by Code_Mech.
Python3
# Python implementation of the approach # Function that returns true if # n is a Dudeney number def isDudeney(n): cube_rt = int(round((pow(n, 1.0 / 3.0)))) # If n is not a perfect cube if cube_rt * cube_rt * cube_rt != n: return False dig_sum = 0 temp = n while temp>0: # Last digit rem = temp % 10 # Update the digit sum dig_sum += rem # Remove the last digit temp//= 10 # If cube root of n is not equal to # the sum of its digits if cube_rt != dig_sum: return False return True # Driver code if __name__ == '__main__': n = 17576 if isDudeney(n): print("Yes") else: print("No")
C#
// C# implementation of the approach using System; class GFG { // Function that returns true if // n is a Dudeney number static bool isDudeney(int n) { int cube_rt = (int)(Math.Round((Math.Pow(n, 1.0 / 3.0)))); // If n is not a perfect cube if (cube_rt * cube_rt * cube_rt != n) return false; int dig_sum = 0; int temp = n; while (temp > 0) { // Last digit int rem = temp % 10; // Update the digit sum dig_sum += rem; // Remove the last digit temp /= 10; } // If cube root of n is not equal to // the sum of its digits if (cube_rt != dig_sum) return false; return true; } // Driver code public static void Main() { int n = 17576; if (isDudeney(n)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed // by Akanksha Rai
PHP
<?php // PHP implementation of the approach // Function that returns true if // n is a Dudeney number function isDudeney($n) { $cube_rt = floor(round((pow($n, 1.0 / 3.0)))); // If n is not a perfect cube if ($cube_rt * $cube_rt * $cube_rt != $n) return false; $dig_sum = 0; $temp = $n; while ($temp > 0) { // Last digit $rem = $temp % 10; // Update the digit sum $dig_sum += $rem; // Remove the last digit $temp = $temp/10; } // If cube root of n is not equal to // the sum of its digits if ($cube_rt != $dig_sum) return false; return true; } // Driver code $n = 17576; if (isDudeney($n)) echo "Yes"; else echo "No"; // This code is contributed by Ryuga ?>
Javascript
<script> // Javascript implementation of the approach // Function that returns true if // n is a Dudeney number function isDudeney(n) { let cube_rt = parseInt( Math.round((Math.pow(n, 1.0 / 3.0)))); // If n is not a perfect cube if (cube_rt * cube_rt * cube_rt != n) return false; let dig_sum = 0; let temp = n; while (temp > 0) { // Last digit let rem = temp % 10; // Update the digit sum dig_sum += rem; // Remove the last digit temp = parseInt(temp / 10); } // If cube root of n is not equal to // the sum of its digits if (cube_rt != dig_sum) return false; return true; } // Driver code let n = 17576; if (isDudeney(n)) document.write("Yes"); else document.write("No"); // This code is contributed by souravmahato348 </script>
Producción:
Yes
Complejidad de tiempo: O (logn)
Espacio Auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por Harshit Saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA