关键字:求一个数字的位数,及判断两个数的后k位是否相同:用求余
题目描述
守形数是这样一种整数,它的平方的低位部分等于它本身。 比如25的平方是625,低位部分是25,因此25是一个守形数。 编一个程序,判断N是否为守形数。
输入描述:
输入包括1个整数N,2<=N<100。
输出描述:
可能有多组测试数据,对于每组数据,
输出”Yes!”表示N是守形数。
输出”No!”表示N不是守形数。
示例1
输入
25
4
输出
Yes!
No!
代码:
#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;
}