输出n位数的水仙花数 C语言 PTA

#include <stdio.h>

#include <math.h>

 

int main() {

    int n, i, j, k, sum, count = 0;

    scanf("%d", &n);

    int arr[n]; // 定义一个长度为n的数组

//遍历n位数的所有数,找出水仙花数,输出水仙花数。如何找出水仙花数呢?先把数的每一位存进数组,遍历数组求每一位的n(位数)次方之和,如果和等于该数,则该数为水仙花数。

    for (i = pow(10, n - 1); i < pow(10, n); i++) {

        sum = 0;

        k = i;//用k代替i进行运算,最后判断相等的时候方便

        for (j = 0; j < n; j++) {

            arr[j] = k % 10; // 将i的每一位存入数组中

            k /= 10;

        }

        for (j = 0; j < n; j++) {

            sum += pow(arr[j], n); // 计算每一位的n次方之和

        }

        if (sum == i) {

            printf("%d\n", i);

            count++;

        }

    }

    if (count == 0) {

        printf("No result.\n");

    }

    return 0;

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱C的菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值