HUST-守形数

题目描述

守形数是这样一种整数,它的平方的低位部分等于它本身。 比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。

输入描述:

输入包括1个整数N,2<=N<100。

输出描述:

可能有多组测试数据,对于每组数据,
输出"Yes!”表示N是守形数。
输出"No!”表示N不是守形数。
示例1

输入

25
4

输出

Yes!
No!

解法一:数字转字符串,再进行比较
#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int i=0,j=0;
        int num=n*n;
        string str1=to_string(num);
        string str2=to_string(n);
        for(i=str2.length()-1,j=str1.length()-1;i>=0;i--,j--)
        {
            if(str2[i]!=str1[j]) break;
        }
        if(i<0) cout<<"Yes!\n";
        else cout<<"No!\n";
    }
    return 0;
}

解法二:直接比较

#include <cstdio>
#include <cmath>
#include <iostream>
using namespace std;
int main()
{
    int n;
    while(cin>>n)
    {
        int i=0;
        int num=n*n;
        if(n>=2&&n<=9) i=10;
        else i=100;
        if((num-n)%i==0) cout<<"Yes!\n";
        else cout<<"No!\n";
    }
    return 0;
}

 

 
posted @ 2021-02-04 00:29  yyer  阅读(178)  评论(0编辑  收藏  举报