题解 | #水仙花数#

水仙花数

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

#include <stdio.h>


#include <math.h>

int is_narcissistic(int num) {
	if (num < 100 || num > 999) // 如果输入的数不符合规则就排除
		return 0;
	int hundreds = num / 100;   // 百位数
	int tens = (num / 10) % 10;  // 十位数
	int ones = num % 10;         // 个位数
	int sum = pow(hundreds, 3) + pow(tens, 3) + pow(ones, 3);
	return sum == num; // 如果每一位的立方数加起来等于原数,那么这个数就是水仙花数
}

int main() {
	int m, n, i;
	scanf("%d %d", &m, &n);
	int found = 0; // 创建一个变量,用于检查是否找到了水仙花数

	// 遍历从 m 到 n 的每个数,检查是否是水仙花数
	for (i = m; i <= n; i++) {
		if (is_narcissistic(i))
        { // 找到的条件
			if (found)//如果found为0的话是无法执行这个条件语句的
            //所以只有在这个条件语句执行之前找到第一个水仙数,这个条件语句才能执行,第一个水仙花数打印的前面不需要空格,但是第二个需要,
            { // 如果已经找到过水仙花数,就在前面加空格
				printf(" ");
			}
			printf("%d", i); // 打印水仙花数
			found ++; // 标记已找到水仙花数
		}
	}

	if (found==0) { // 没找到就打印 no
		printf("no\n");
	}
	else { // 否则打印换行符
		printf("\n");
	}

	return 0;
}

全部评论

相关推荐

我见java多妩媚:大外包
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务