杜德尼数字
给定整数n ,任务是检查n是否为 Dudeney 数字。 Dudeney 数字是一个正整数,是一个完美的立方体,因此其十进制数字的总和等于该数字的立方体根。
例子:
Input: N = 19683
Output: Yes
19683 = 273 and 1 + 9 + 6 + 8 + 3 = 27
Input: N = 75742
Output: No
方法:
- 检查 n 是否是一个完美的立方体,如果不是,则它不能是 Dudeney 数。
- 如果 n 是一个完美的立方体,则计算其数字的总和。如果其数字的总和等于其立方根,则为 Dudeney 数字,否则为非。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Linux kernel 权限提升漏洞 CVE-2021-3493
下一篇: 解读《弟子规》
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论