所谓水仙花数,是指一个三位数其各位数字立方和等于该数本身。
例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
<pre name="code" class="cpp">#include <iostream>
using namespace std;
int Narcissus(int x){
int a, b, c;
if (x < 100 || x>999)return 1;
a = x/100; // 百位
b = x%100/10; // 十位
c = x%100%10; // 个位
if (x == (a*a*a)+(b*b*b)+(c*c*c) ){
cout<< "yes"<<endl;
}else{
cout<< "No"<<endl;
}
}
int main(){
int x;
while(cin>>x){
if (x == 0)break;
Narcissus(x);
}
return 0;
}
这题目是在acm上面看到的,参考了网上公布的原理,初学算法,多多指教^_^