题目描述
回文数是指从左向右念和从右向左念都一样的数。如12321就是一个典型的回文数。
如果给定一个数,如果其是回文数并且是某个正整数的平方,则称其为回文平方数。
比如121,它既是回文数并且是11的平方,所以121是回文平方数。
输入
输入包括多组数据(少于30000组)。
每组数据包括一行,每行仅一个正整数n(1<=n<231)。若n是0,则表示结束输入(不需要处理)。
输出
对于每一行的正整数n, 输出一行。
如果n是回文平方数,输出"YES", 否则输出"NO"。
样例输入
111
121
122
0
样例输出
NO
YES
NO
#include <stdio.h>
#include <math.h>
int fuc(int x)
{
int m,newed=0,t=0;
m=x;
do
{
newed=newed*10+m%10;
m/=10;
}while(m>0);
if(x==newed) t=1;
return t;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n!=0)
{
if(fuc(n)&&sqrt(n)==(int)sqrt(n)) printf("YES\n");
else printf("NO\n");
}
return 0;
}
注意判断是否为平方数的方法。