题目描述
给定一个整数,判断其是否是水仙花数。三数a(百位数)、b(十位数)、c(个位数),满足 a^3+b^3+c^3=abc ,则称abc为水仙花数 ,比如153=1^3+5^3+3^3
输入格式
一行一个整数n
输出格式
若是,输出YES,若否,输出NO
样例组输入#1
153
样例组输出#1
YES
拓展文章:自幂数。(如有兴趣请点击下方链接查看)
Python碎片化学习教程 @18. 自幂数、水仙花数、四叶玫瑰数等等是什么? - 哔哩哔哩
首先,我们先要获取输入,将输入保存在int类型(输入格式中有写)的变量n中。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n; //定义输入的变量
cin >> n; //获取输入,scanf()也可
return 0;
}
当获取完输入后,我们要分解这个数,分出百位、十位、个位,并用a,b,c三个变量保存起来。 以下为各位的获取方式:
个位 | 要分解的数字%10 |
十位 | 要分解的数字%100/10 |
百位 | 要分解的数字/100 |
因此,代码应该这样写:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n; //定义输入的变量
cin >> n; //获取输入,scanf()也可
int a = n / 100; //获取百位
int b = n % 100 / 10; //获取十位
int c = n % 10; //获取个位
return 0;
}
接下来要判断这个数是否是水仙花数。水仙花数的定义如下:
水仙花数是指一个3位数,它的每个位上的数字的立方和等于它本身。例如153就是一个水仙花数,因为1³+5³+3³=153。其他的水仙花数还有370、371、407等。
我们需要一个判断语句,判断条件是a(百位数)*a*a+b(十位数)*b*b+c(个位数)*c*c=n(原数) 。如果条件成立,则输出YES,否则(else),输出NO。
#include<bits/stdc++.h>
using namespace std;
int main(){
int n; //定义输入的变量
cin >> n; //获取输入,scanf()也可
int a = n / 100; //获取百位
int b = n % 100 / 10; //获取十位
int c = n % 10; //获取个位
if(a * a * a + b * b * b + c * c * c == n){ //判断是否是水仙花数
cout << "YES"; //输出YES
}else{ //否则
cout << "NO"; //输出NO
}
return 0;
}
代码已讲解完毕,以下为所有代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n; //定义输入的变量
cin >> n; //获取输入,scanf()也可
int a = n / 100; //获取百位
int b = n % 100 / 10; //获取十位
int c = n % 10; //获取个位
if(a * a * a + b * b * b + c * c * c == n){ //判断是否是水仙花数
cout << "YES"; //输出YES
}else{ //否则
cout << "NO"; //输出NO
}
return 0;
}