C++ 中的自恋数2025年5月13日 | 阅读 4 分钟 在本文中,我们将讨论 C++ 中的自恋数 (Narcissistic Numbers)。在讨论 C++ 中的自恋数之前,我们必须了解其方法、示例、时间复杂度和空间复杂度。 什么是自恋数?一个数如果等于其各位数字的位数次幂之和,则该数被称为阿姆斯特朗数 (Armstrong Number) 或自恋数 (Narcissistic Number)。由于一个三位数 n 有三个数字,每个数字 d 都被提升到三次方,然后将这些数字的总和与 n 进行比较。如果它们匹配,这个数就是自恋数。例如,1^3 + 5^3 + 3^3 = 153,这使得它成为一个自恋数。在 C++ 中,通过使用除法和取模运算提取每个数字,计算出每个数字的幂,然后将结果相加以确保它们与原始数字相同。这个属性对于特定的整数是独一无二的,并经常被用作编程和计算数学中学习条件语句、循环和数学运算的练习。 方法 1:使用 Pow 函数该方法包括计算数字的位数,然后提取每个数字。通过将每个数字提升到总位数的幂次来确定其幂值,并应用 pow 函数。为了确定一个数是否是自恋数,计算这些幂次数字的总和,并将其与原始数字进行比较。 示例让我们以一个例子来说明 C++ 中的自恋数。 输出 Enter a number to check if it is a Narcissistic number: 153 153 is a Narcissistic number. 说明该程序确定某个数字是否与自恋数有关。程序定义了 countDigits 函数,它递归地计算输入整数的位数。利用这个位数,另一个名为“Narcissistic”的函数计算所有数字提升到总位数次幂后的总和。为了判断这个数是否是自恋数,然后将其与初始数字进行比较。当用户在主函数中输入一个数字时,计算机会将该数字传递给“Narcissistic”函数。如果函数返回 true,程序会指出该数字是自恋数,否则指出不是。该方法基于幂运算和模运算的使用。这个用户友好的应用程序可以动态处理任何用户提供的输入。它突出了重要的编程思想,包括条件、循环和递归。 复杂度分析
方法 2:使用字符串的简化方法简化方法使用字符串作为输入,遍历字符串。程序计算每个字符(从字符派生出的数字)提升到字符串长度(表示数字位数)的幂。通过这样做,原始数字不需要任何数值运算。 示例让我们再举一个例子来说明 C++ 中的自恋数。 输出 Enter a number to check if it is a Narcissistic number: 154 No, the number is not Narcissistic. 说明这个 C++ 程序用于判断一个给定的数是否为自恋数。它定义了一个名为 checkNarcissistic 的函数,该函数接收一个包含数字的字符串输入,计算所有数字提升到数字位数次幂后的总和,并将其与初始值进行比较。如果总和等于原始值,该函数返回一条消息确认该数是自恋数。主函数要求用户输入一个数字,然后将其发送给 checkNarcissistic 进行处理。之后,显示结果。该程序通过字符串操作和数学运算(如类型转换和求幂)来处理数字。 复杂度分析
下一个主题在 C++ 中切换数字的首位和末位 |
分发饼干问题是一个简单的问题,它专门针对具有稀缺可用资源的资源共享,以满足尽可能多的需求。最初的编码面试问题在应用贪婪算法方面展示了关键原则。在这个问题中,我们...
阅读 10 分钟
引言回文检查是一项常见的编程任务,正如我们在许多经常讨论的问题中已经看到的。然而,在这个工作的范围内,它们是必不可少的,因为它们是字符串级别上可标记的序列;回文是读起来相同的序列……
阅读 12 分钟
杂耍算法是一种有用的 C++ 技术,它通过移动元素来执行旋转。它使用数组大小 n 和要旋转的位数 d 的最大公约数 (GCD) 将数组分成几组。之后,元素被...
5 分钟阅读
在本文中,我们将讨论 C++ 中打印 V 形和倒 V 形图案的程序及其实现、时间复杂度和空间复杂度。1. 倒 V 形图案:给定值 n,打印倒 V 形图案。示例 1:让我们举一个例子来说明倒 V 形...
阅读 8 分钟
引言 在广阔的字符串操作领域中,存在一个引人入胜的问题,吸引着新手和经验丰富的程序员——探索具有相等字符频率和固定距离的子字符串。这个神秘的挑战包含了算法、数据结构和数学之间微妙的相互作用...
阅读9分钟
简介 当涉及到 C++ 编程时,标准模板库 (STL) 为开发人员提供了许多功能,这是一个强大的工具,可以提高开发过程的效率和效果。STL 将字符串作为其关键组件之一,字符串是...
7 分钟阅读
在本文中,我们将讨论及其实现。什么是 Ford Fulkerson 算法?Ford-Fulkerson 算法通常用于解决流中的最大流问题。最大流问题涉及找到可以传输的最大流量...
阅读 6 分钟
勒让德猜想(Legendre's Conjecture)是一个陈述,即两个连续自然数的平方之间总是存在一个素数。在本文中,我们将讨论勒让德猜想及其算法和实现。数学陈述:在任意两个连续自然数的平方之间存在一个素数 p...
7 分钟阅读
“接雨水”问题是一个著名的计算挑战,它展示了利用算法思维解决现实世界问题的应用。它需要分析一个表示高程的整数数组,以确定降雨后水可以在条形之间被截留的量。这...
11 分钟阅读
获取对象地址的一种安全方法是使用 std::to_address 实用函数,该函数已添加到 C++17 的 C++ 标准库中,无论它是智能指针的实例还是容器的元素。在 C++ 中,获取地址……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India