其实,水仙花这个真的很简单,而且去年上c++的时候有写过。但是,就是修改了很多次才被ac。所以,细节真的很重要!
#include<iostream>
using namespace std;
int main()
{
int m,n;
while(scanf("%d%d",&m,&n)!=EOF)
{
int count=0; //在多层循环里,一些语句位置的放置很重要。一开始,这个语句我放在了int m,n的后面,导致输出错误:只有第一个无水仙花会输 // 出 no
for(int i=m;i<=n;i++) //这里我之前写的是i<=n&&i>=m,前面明明就是从m开始的,我在想什么呢。
{
int x,y,z,a;
x=(i/100)*(i/100)*(i/100);
a=i%100;
y=(a/10)*(a/10)*(a/10);
z=(a%10)*(a%10)*(a%10);
int daffodils;
daffodils=x+y+z;
if(daffodils==i)
{
count++;
if(count!=1) //又是一个令我报错的位置,是输出格式不对。输出应为 数 空格 数 回车(这里之前为空格然后在循环外回车)
printf(" %d",i); //第一次改的思路是最后一个水仙花数后为换行,前面的水仙花数后都为空格。可是我没想到实现办法。
else //把空格输在前面就明朗多了。
printf("%d",i);
}
}
if(count==0)
cout<<"no";
cout<<endl;
}
return 0;
}