同构数的问题,可以用穷举法写写么

所谓“同构数”是指这样的数,它出现在它的平方数的右边,例如5的平方数是25, 25的平方数是625,所以5和25都是同构数。你的任务是判断整数x是否是同构数。若是同构数,输出“Yes”,否则输出“No”。x的取值范围是(1<=x<=10000),如果输入的x不在允许范围内,则输出错误提示信息“x out of range”。
输入格式:
只有一个整数。测试用例保证所有输入可以用int存储。
输出格式:
只有一行,为判断结果。
输入样例:
20000
输出样例:
20000 out of range

  • ```


```

供参考:

#include <stdio.h>
int main()
{
    int i, k, t, s;
    scanf("%d", &i);
    if(i >= 1 && i <= 10000)
    {
        t = i; k = i * i; s = 1;
        while (t) { s *= 10; t /= 10; }
        if ((k % s) == i)
            printf("Yes");
        else
            printf("No");
    }
    else
        printf("%d out of range",i);
    return 0;
}

//这个问题在哪呢?感谢大佬请教
#include <stdio.h>
int main( )
{
int i;
scanf("%d",&i);
//位数个,十,百,千。
if(1<=i&&i<=9)//个位数,即一位数
{ if(i==(ii)%10)
printf("Yes\n");
else printf("NO\n");
}
else if(10<=i&&i<=99)//十位数,即两位数
{ if(i==(i
i)%100)
printf("Yes\n");
else printf("NO\n");
}
else if(100<=i&&i<=999)//百位数,即三位数
{ if(i==(ii)%1000)
printf("Yes\n");
else printf("NO\n");
}
else if(1000<=i&&i<=9999)//千位数,即四位数
{ if(i==(i
i)%10000)
printf("Yes\n");
else printf("NO\n");
}
else if(i==10000)
{printf("NO\n");
}

else
printf("%d out of range\n",i);
return 0;
}