水仙花数莫名其妙少一个153

我试了好几种做法,一直少一个153...自闭,也不知道哪里有问题
#include
#include
int main()
{

int d,a;
double n,x,y;
scanf("%lf",&n);
x=pow(10,n-1);
y=pow(10,n);
for(a=x;a<y;a++)
{
    int b=a,i,s=0;
    for(i=1;i<=n;i++)
    {
        d=b%10;
        s=s+pow(d,n);
        b=b/10;
    }
    if(a==s)
    printf("%d\n",a);
}

}
找网上的一个答案到我自己电脑输出也少153
求解答

s=s+pow(d,n);
这个结果是不可靠的,因为浮点数可能存在误差,导致取整后少1或者多1。
你应该这么写
int mypow(int x, int y)
{
int r = 1;
for (int i = 0; i < y; i++) r = r * x;
return r;
}
然后调用mypow代替pow

我测试是有153的结果的
图片说明

输出一下x和y的值,看看对不对