代码如下:
#include<iostream>
using namespace std;
int main()
{
int a,b,c,m,n;
while(cin>>m>>n)
{
int count = 0;
if(m<100||n>999||m>n)//m小于n,其m和n的范围在100到999
break;
for(int i=m;i<=n;i++)
{
a=i/100; //求百位
c=i%10; //求个位
b=((i%100)-c)/10; //求十位
if(a*a*a+b*b*b+c*c*c==i)//寻找水仙花数
{
if(count == 0)
cout << i << flush;
else
cout<< " " << i << flush;
count++;
}
}
}
}
上面的代码是拆分一个三位数的每一位,若是对任意一个数进行拆分,通用的写法应该是这样的:
int n[10];//2^32是十位的二进制数,十进制整型不会超过10位
for(int