题解 | #水仙花数#
水仙花数
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; }