Dudeney Numbers
Учитывая целое число n , задача состоит в том, чтобы проверить, является ли n числом Дудени или нет. Число Дудени - это положительное целое число, которое представляет собой идеальный куб, сумма десятичных цифр которого равна кубическому корню из числа.
Примеры:
Input: N = 19683
Output: Yes
19683 = 273 and 1 + 9 + 6 + 8 + 3 = 27Input: N = 75742
Output: No
Рекомендуется: сначала попробуйте свой подход в {IDE}, прежде чем переходить к решению.
Подход:
- Проверьте, является ли n идеальным кубом, если нет, то это не может быть число Дудени.
- Если n - идеальный куб, вычислите сумму его цифр. Если сумма его цифр равна его кубическому корню, тогда это число Дудени, иначе это не так.
Below is the implementation of the above approach:
C++
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function that returns true if// n is a Dudeney numberbool 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 codeint main(){ int n = 17576; if (isDudeney(n)) cout << "Yes"; else cout << "No"; return 0;} |
Java
// Java implementation of the approachimport java.lang.Math; class GFG{ // Function that returns true if// n is a Dudeney numberstatic 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 codepublic 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 numberdef 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 codeif __name__ == "__main__": n = 17576 if isDudeney(n): print("Yes") else: print("No") |
C#
// C# implementation of the approachusing System; class GFG{ // Function that returns true if// n is a Dudeney numberstatic 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 codepublic 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?> |
Yes
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.