题解 | 水仙花数

水仙花数

https://www.nowcoder.com/practice/dc943274e8254a9eb074298fb2084703

#include <stdio.h>

int isnar (int num){
    int original = num ; //用于保存原始数值
    int sum = 0 ; //用于计算各位数字的幂和
    int digits = 0 ; //数字的位数
    int temp = num ; //临时变量,用于计算

    //计算数字的位数
    while (temp!=0){
        digits++ ;
        temp/=10 ;
    }
    //计算各位数字的幂和
    temp = num ; //重置temp
    while (temp != 0) {
        int digit = temp%10 ;//获取最后一位数字
        sum += pow(digit,digits) ;//计算幂和
        temp /= 10 ;//去掉最后一位数字
    }

    return sum == original ;//判断等号两边是否相等
}
int main(){
    int start,end ;//储存用户输入的起始值和结束值
    int found = 0 ;//标记是否找到水仙花数
    while (scanf("%d %d",&start,&end)!=EOF) {
        for (int i = start ;i <= end;i++) {
            if (isnar(i)) {
                printf("%d ",i) ;
                found = 1 ;
            }
        }
        if (!found){
        printf("no");
        
    }
        printf("\n");
    }
    return 0 ;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务