考研机试真题--守形数--华中科技大学

关键字:求一个数字的位数,及判断两个数的后k位是否相同:用求余

题目描述
守形数是这样一种整数,它的平方的低位部分等于它本身。 比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。
输入描述:
输入包括1个整数N,2<=N<100。
输出描述:
可能有多组测试数据,对于每组数据,
输出”Yes!”表示N是守形数。
输出”No!”表示N不是守形数。
示例1
输入
25
4
输出
Yes!
No!

题目链接:
https://www.nowcoder.com/practice/99e403f8342b4d0e82f1c1395ba62d7b?tpId=40&tqId=21549&tPage=1&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan/question-ranking

代码:

#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

//求一个数字的位数
int getK(int x){
    int ans = 0;
    while(x > 0){
        x /= 10;
        ans++;
    }
    return ans;
}

int main(){
//    freopen("a.txt", "r", stdin);
    int x, k, s;
    while(cin >> x){
        k = getK(x);
        s = x * x;
        puts((s % (int)pow(10, k)) == x ? "Yes!" : "No!");

    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/Void_worker/article/details/81125111
今日推荐