📜  自恋数

📅  最后修改于: 2021-04-29 09:54:53             🧑  作者: Mango

给定N,检查它是否是自恋数字。
注意:自恋数字是一个数字,它是其自己的数字之和,每个数字均提高为数字的幂

例子 :

方法是对数字进行计数,然后提取每个数字,然后使用pow函数,我们可以获取该数字的功效,然后将其求和,然后与原始数字进行比较,以检查它是否是自恋的是否编号。

以下是上述想法的实现。

C++
// CPP program for checking of
// Narcissistic number
#include 
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


C++14
// CPP program for checking of
// Narcissistic number
#include 
#include 
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.


输出
yes

方法2:使用字符串的简化方法

我们必须将输入作为字符串,并遍历每个字符与字符串长度的字符串计算能力。注意:此处的字符串长度给出该数字的位数

下面是上述方法的实现

C++ 14

// CPP program for checking of
// Narcissistic number
#include 
#include 
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.
输出
yes

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