三体·六分仪 2025-04-19 18:26 采纳率: 100%
浏览 8
已结题

五角星数(函数解题)c++

题目描述
水仙花数(Narcissistic number),又称自幂数、超完全数字不变数、自恋数、阿姆斯特朗数(Armstrong number),是指一个大于 3 的 n 位数,它的每个数位上的数字的 n 次幂之和,等于它本身。(例如:1³ +5³+3³=153)。严格来说,只有三位数的 3 次幂数才能被视为水仙花数。

请编写一个程序,找出五位自幂数(五角星数)。

输入格式

输出格式
所有五位数的五角星数

样例数据
输入样例 #1


输出样例 #1

*****
54748
*****

数据范围
对于全部数据,10000≤n≤99999。

  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-04-19 18:30
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    五角星数(函数解题)C++ 解答

    五角星数(五位自幂数)是指一个五位数,它的每个数位上的数字的5次幂之和等于它本身。我们需要找出所有这样的五位数。

    解题思路

    1. 遍历所有五位数(10000到99999)
    2. 对于每个数,分离出它的每一位数字
    3. 计算每位数字的5次幂之和
    4. 如果这个和等于原数,则输出该数

    C++ 实现代码

    #include <iostream>
    #include <cmath>
    
    using namespace std;
    
    bool isPentagramNumber(int num) {
        if (num < 10000 || num > 99999) {
            return false;
        }
        
        int original = num;
        int sum = 0;
        
        while (num > 0) {
            int digit = num % 10;
            sum += pow(digit, 5);
            num /= 10;
        }
        
        return sum == original;
    }
    
    int main() {
        for (int i = 10000; i <= 99999; ++i) {
            if (isPentagramNumber(i)) {
                cout << i << endl;
            }
        }
        
        return 0;
    }
    

    代码说明

    1. isPentagramNumber 函数用于判断一个数是否是五角星数:

      • 首先检查数字是否是五位数
      • 然后分离每一位数字并计算其5次幂之和
      • 最后比较和与原数是否相等
    2. main 函数遍历所有五位数,调用判断函数并输出符合条件的数

    输出结果

    运行程序将输出所有五位数的五角星数,根据题目描述,其中一个结果是54748。

    注意事项

    1. 使用 pow 函数计算幂时,确保包含 <cmath> 头文件
    2. 在分离数字时,注意处理数字的顺序(从个位开始)
    3. 题目要求输出所有五位数的五角星数,因此需要遍历整个五位数范围
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月19日