题目描述
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:
“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。
现在要求输入一个三位数,判断该数是否是水仙花数,如果是,输出“yes”,否则输出“no”
输入
输入一个三位的正整数。
输出
输出“yes”或“no”。
样例输入 Copy
153
样例输出 Copy
yes
#include <stdio.h> // 包含标准输入输出头文件,用于使用 printf 和 scanf 函数
#include <math.h> // 包含数学库头文件,用于使用 pow 函数
int main() {
int n; // 声明一个整数变量 n,用于存储输入的三位正整数
scanf("%d", &n); // 从标准输入读取一个整数并存储到 n 中
// 提取每一位数字
int hundreds = n / 100; // 计算百位数字:将 n 除以 100,结果为百位的值
int tens = (n / 10) % 10; // 计算十位数字:将 n 除以 10 后对 10 取余,结果为十位的值
int units = n % 10; // 计算个位数字:对 n 取余 10,结果为个位的值
// 计算立方和
int sum_of_cubes = pow(units, 3) + pow(tens, 3) + pow(hundreds, 3);
// 使用 pow 函数计算每个数字的立方,并将它们相加得到 sum_of_cubes
// 判断是否为水仙花数
if (sum_of_cubes == n) // 检查立方和是否等于原数 n
{
printf("yes\n"); // 如果相等,输出 "yes",表示是水仙花数
}
else {
printf("no\n"); // 如果不相等,输出 "no",表示不是水仙花数
}
return 0; // 正常结束程序,返回 0 表示成功
}