Números Dudeney

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 = 27

Entrada: 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *