题目描述
守形数是这样一种整数,它的平方的低位部分等于它本身。 比如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! "; else cout<<"No! "; } 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! "; else cout<<"No! "; } return 0; }