número narcisista

Dado N, comprueba si es un número narcisista o no.
Nota: Número narcisista es un número que es la suma de sus propios dígitos, cada uno elevado a la potencia del número de dígitos

Ejemplos:  

Entrada: 153
Salida:
Explicación: 1^3+5^3+3^3=153 

Entrada: 1634
Salida:
Explicación: 1^4+6^4+3^4+4^4=1634 

El enfoque será contar la cantidad de dígitos y luego extraer cada dígito y luego, al usar la función pow, podemos obtener la potencia de ese dígito y luego resumirlo al final y compararlo con el número original para verificar si es un narcisista. Número o no.

A continuación se muestra la implementación de la idea anterior.

C++

// CPP program for checking of
// Narcissistic number
#include <bits/stdc++.h>
using namespace std;
 
// function to count digits
int countDigit(int n)
{
    if (n == 0)
        return 0;
 
    return 1 + countDigit(n / 10);
}
 
// Returns true if n is Narcissistic number
bool check(int n)
{
    // count the number of digits
    int l = countDigit(n);
    int dup = n;
    int sum = 0;
 
    // calculates the sum of digits
    // raised to power
    while (dup)
    {
        sum += pow(dup % 10, l);
        dup /= 10;
    }
 
    return (n == sum);
}
 
// Driver code
int main()
{
    int n = 1634;
    if (check(n))
        cout << "yes";
    else
        cout << "no";
    return 0;
}

Java

// Java program for checking
// of Narcissistic number
import java.io.*;
import static java.lang.Math.*;
class narcissistic
{
 
// function to count digits
int countDigit(int n)
{
    if (n == 0)
        return 0;
  
    return 1 + countDigit(n / 10);
}
  
// Returns true if n is Narcissistic number
boolean check(int n)
{
    // count the number of digits
    int l = countDigit(n);
    int dup = n;
    int sum = 0;
  
    // calculates the sum of
    //digits raised to power
    while(dup > 0)
    {
        sum += pow(dup % 10, l);
        dup /= 10;
    }
  
    return (n == sum);
}
  
// Driver code
public static void main(String args[])
 {
    narcissistic obj = new narcissistic();
    int n = 1634;
    if (obj.check(n))
        System.out.println("yes");
    else
        System.out.println("no");
  }
}
 
//This code is contributed by Anshika Goyal.

Python3

# Python 3 program for checking of
# Narcissistic number
 
# function to count digits
def countDigit(n) :
    if (n == 0) :
        return 0
 
    return (1 + countDigit(n // 10))
     
 
# Returns true if n is Narcissistic number
def check(n) :
     
    # Count the number of digits
    l = countDigit(n)
    dup = n; sm = 0
 
    # Calculates the sum of digits
    # raised to power
    while (dup) :
        sm = sm + pow(dup % 10, l)
        dup = dup // 10
     
    return (n == sm)
     
 
# Driver code
n = 1634
if (check(n)) :
    print( "yes")
else :
    print( "no")
     
     
 
# This code is contributed by Nikita Tiwari.

C#

// C# program for checking
// of Narcissistic number
using System;
 
class narcissistic
{
 
    // function to count digits
    int countDigit(int n)
    {
        if (n == 0)
            return 0;
     
        return 1 + countDigit(n / 10);
    }
     
    // Returns true if n is Narcissistic number
    bool check(int n)
    {
        // count the number of digits
        int l = countDigit(n);
        int dup = n;
        int sum = 0;
     
        // calculates the sum of
        //digits raised to power
        while(dup > 0)
        {
            sum += (int)Math.Pow(dup % 10, l);
            dup /= 10;
        }
     
        return (n == sum);
    }
     
    // Driver code
    public static void Main()
    {
        narcissistic obj = new narcissistic();
        int n = 1634;
        if (obj.check(n))
            Console.WriteLine("yes");
        else
            Console.WriteLine("no");
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP program for checking of
// Narcissistic number
 
// Function to count digits
function countDigit($n)
{
    if ($n == 0)
        return 0;
 
    return (1 + countDigit($n / 10));
}
 
// Returns true if n is
// Narcissistic number
function check( $n)
{
    // count the number of digits
    $l = countDigit($n);
    $dup = $n;
    $sum = 0;
 
    // calculates the sum of digits
    // raised to power
    while ($dup)
    {
        $sum += pow($dup % 10, $l);
        $dup = (int)$dup / 10;
    }
 
    return ($n == $sum);
}
 
// Driver Code
$n = 1634;
if (check(!$n))
    echo "yes";
else
    echo "no";
 
// This code is contributed by akt_mit
?>

Javascript

<script>
 
// Javascript program for checking of
// Narcissistic number
  
// Function to count digits
function countDigit(n)
{
    if (n == 0)
        return 0;
  
    return (1 + countDigit(n / 10));
}
  
// Returns true if n is
// Narcissistic number
function check( n)
{
    // count the number of digits
    let l = countDigit(n);
    let dup = n;
    let sum = 0;
  
    // calculates the sum of digits
    // raised to power
    while (dup)
    {
        sum += Math.pow(dup % 10, l);
        dup = parseINT(dup / 10);
    }
  
    return (n == sum);
}
  
// Driver Code
let n = 1634;
if (check(!n))
    document.write("yes");
else
    document.write("no");
  
// This code is contributed by _saurabh_jaiswal
</script>
Producción

yes

Complejidad de tiempo: O (logn)

Espacio Auxiliar: O(1)
 

Método 2: método simplificado usando una string

Tenemos que tomar la entrada como una string y atravesar la potencia de cálculo de la string de cada carácter con la longitud de la string. Nota: aquí la longitud de la string da el número de dígitos de ese número

A continuación se muestra la implementación del enfoque anterior.

C++14

// CPP program for checking of
// Narcissistic number
#include <bits/stdc++.h>
#include <string.h>
using namespace std;
 
string getResult(string st)
{
    int sum = 0;
    int length = st.length();
     
    // Traversing through the string
    for (int i = 0; i < length; i++)
    {
        // Since ascii value of numbers
        // starts from 48 so we subtract it from sum
        sum = sum + pow(st[i] - '0', length);
    }
     
    // Converting string to integer
    int number = stoi(st);
     
    // Comparing number and sum
    if (number == sum)
        return "yes";
    else
        return "no";
}
 
// Driver Code
int main()
{
    string st = "153";
    cout << getResult(st);
    return 0;
}

Java

// Java program for checking of
// Narcissistic number
class GFG
{
 
static String getResult(String st)
{
    int sum = 0;
    int length = st.length();
     
    // Traversing through the string
    for (int i = 0; i < length; i++)
    {
       
        // Since ascii value of numbers
        // starts from 48 so we subtract it from sum
        sum = sum + (int)Math.pow(st.charAt(i) - '0', length);
    }
     
    // Converting string to integer
    int number = Integer.parseInt(st);
     
    // Comparing number and sum
    if (number == sum)
        return "yes";
    else
        return "no";
}
 
// Driver Code
public static void main(String []args)
{
    String st = "153";
    System.out.print(getResult(st));
}
}
 
// This code is contributed by rutvik_56.

Python3

# Python program for checking of
# Narcissistic number
 
 
def getResult(st):
    sum = 0
    length = len(st)
 
    # Traversing through the string
    for i in st:
 
        # Converting character to int
        sum = sum + int(i) ** length
 
    # Converting string to integer
    number = int(st)
 
    # Comparing number and sum
    if (number == sum):
        return "true"
    else:
        return "false"
 
 
# Driver Code
# taking input as string
st = "153"
print(getResult(st))

C#

// C# program for checking of
// Narcissistic number
using System;
class GFG
{
 
static string getResult(string st)
{
    int sum = 0;
    int length = st.Length;
     
    // Traversing through the string
    for (int i = 0; i < length; i++)
    {
       
        // Since ascii value of numbers
        // starts from 48 so we subtract it from sum
        sum = sum + (int)Math.Pow(st[i] - '0', length);
    }
     
    // Converting string to integer
    int number = int.Parse(st);
     
    // Comparing number and sum
    if (number == sum)
        return "yes";
    else
        return "no";
}
 
// Driver Code
public static void Main(string []args)
{
    string st = "153";
    Console.Write(getResult(st));
}
}
 
// This code is contributed by pratham76.

Javascript

<script>
    // Javascript program for checking of
    // Narcissistic number
     
    function getResult(st)
    {
        let sum = 0;
        let length = st.length;
 
        // Traversing through the string
        for (let i = 0; i < length; i++)
        {
 
            // Since ascii value of numbers
            // starts from 48 so we subtract it from sum
            sum = sum + Math.pow(st[i] - '0', length);
        }
 
        // Converting string to integer
        let number = parseInt(st, 10);
 
        // Comparing number and sum
        if (number == sum)
            return "yes";
        else
            return "no";
    }
     
    let st = "153";
    document.write(getResult(st));
     
</script>
Producción

yes

Complejidad de tiempo: O (nlogn)

Espacio Auxiliar: O(1)

 Referencias: http://mathandmultimedia.com/2012/01/16/narcissistic-numbers/
 

Publicación traducida automáticamente

Artículo escrito por Striver 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 *