所谓“同构数”是指这样的数,它出现在它的平方数的右边,例如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==(ii)%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==(ii)%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;
}