#include <iostream>
#include <cmath>
using namespace std;

bool isNarcissistic(int num) {
    int digit = log10(num) + 1; // 计算数字的位数
    int temp = num;
    int sum = 0;
    
    while (temp > 0) {
        int digit_num = temp % 10; // 取出个位数字
        sum += pow(digit_num, digit); // 累加数字的digit次方
        temp /= 10; // 去掉个位数字
    }
    
    return (sum == num); // 判断是否为水仙花数
}

int main() {
    int K;
    cin >> K;
    
    int start = pow(10, K-1); // 起始数字
    int end = pow(10, K) - 1; // 结束数字
    
    for (int i = start; i <= end; i++) {
        if (isNarcissistic(i)) {
            cout << i << endl; // 输出水仙花数
        }
    }
    
    return 0;
}
``
用c++解决一下问题:问题描述 输入一个位数K输出K位范围内的所有水仙花数。输入格式 输入位数K。输出格式 每行一个输出相应的水仙花数样例输入 3样例输出 153370371407数据规模和约定3=K=7

原文地址: http://www.cveoy.top/t/topic/h5bU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录