给定N,检查它是否是自恋数字。
注意:自恋数字是一个数字,它是其自己的数字之和,每个数字均提高为数字的幂
例子 :
Input : 153
Output : yes
Explanation: 1^3+5^3+3^3=153
Input : 1634
Output : yes
Explanation: 1^4+6^4+3^4+4^4=1634
方法是对数字进行计数,然后提取每个数字,然后使用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/