诗者才子酒中仙 2023-05-16 21:13 采纳率: 58.8%
浏览 74
已结题

C++ 蓝桥历届试题——四叶玫瑰数

C++ 题目背景
四叶玫瑰数是指一个四位数,其各位上的数字的四次方之和等于本身。给定两个正整数N和M,请将N~M (1<=N<=M<=1000000)之间 (含N和M)的四叶玫瑰数按从小到大的顺序输出。

例如: N=1234,M=2345时,有一个四叶玫瑰数1634。

输入格式

第一行输入两个正整数N、M (1<=N<=M<=1000000)

输出格式

输出一行,包含若干个用一个空格隔开的正整数,表示N~M之间的四叶玫瑰数按从小到大的顺序的输出结果

输入输出样例
输入样例
1234 2345
输出样例
1634
说明/提示

注意:
题目数据保证给定的N~M范围内至少有一个四叶玫瑰数

  • 写回答

3条回答 默认 最新

  • 独处东汉 2023-05-16 21:49
    关注

    你好,这个代码可以一试

    #include <iostream>
    #include <cmath>
    using namespace std;
    
    // 判断一个数是否是四叶玫瑰数
    bool isFourLeafRose(int x) {
        int temp = x;
        // 将x的各位数字存入数组
        int digits[4];
        for (int i = 0; i < 4; i++) {
            digits[i] = temp % 10;
            temp /= 10;
        }
        // 计算各位数字的四次方之和
        int sum = 0;
        for (int i = 0; i < 4; i++) {
            sum += pow(digits[i], 4);
        }
        // 判断是否等于原数
        return sum == x;
    }
    
    // 输出N~M之间的四叶玫瑰数
    void printFourLeafRose(int N, int M) {
        // 遍历N~M之间的四位数
        for (int x = max(1000, N); x <= min(9999, M); x++) {
            // 如果是四叶玫瑰数,输出
            if (isFourLeafRose(x)) {
                cout << x << endl;
            }
        }
    }
    
    int main() {
        // 输入N和M
        int N, M;
        cin >> N >> M;
        // 输出结果
        printFourLeafRose(N, M);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月26日
  • 已采纳回答 5月18日
  • 创建了问题 5月16日

悬赏问题

  • ¥15 YOLOv8已有一个初步的检测模型,想利用这个模型对新的图片进行自动标注,生成labellmg可以识别的数据,再手动修改。如何操作?
  • ¥30 NIRfast软件使用指导
  • ¥20 matlab仿真问题,求功率谱密度
  • ¥15 求micropython modbus-RTU 从机的代码或库?
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda