题目描述
守形数是这样一种整数,它的平方的低位部分等于它本身。 比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。
输入描述:
输入包括1个整数N,2<=N<100。
输出描述:
可能有多组测试数据,对于每组数据, 输出"Yes!”表示N是守形数。 输出"No!”表示N不是守形数。
示例1
输入
25 4
输出
Yes! No!
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
int x,y,i,k,flag,p;
while(cin>>x)
{
flag=0;//标志位,判断YES或NO
y=x*x;
k=x%10;//k为x的末尾数字
p=y%10;//p为y的末尾数字
while(x!=0&&y!=0)//因为每轮循环x和y都要进行/10的操作,只要两个都没有变成0,就要继续循环
{
if(k!=p)//只要发现不一样的就退出循环,flag置1
{
flag=1;
break;
}
else//不然的话x和y就都/10,然后更新k和p,即现在是倒数第二位
{
x/=10;
y/=10;
k=x%10;
p=y%10;
}
}
if(flag==0)
cout<<"Yes!"<<endl;
else
cout<<"No!"<<endl;
}
}