题目描述
守形数是这样一种整数,它的平方的低位部分等于它本身。
比如25的平方是625,低位部分是25,因此25是一个守形数。
编一个程序,判断N是否为守形数。
输入
输入包括1个整数N,2<=N<100。
输出
可能有多组测试数据,对于每组数据,
输出"Yes!”表示N是守形数。
输出"No!”表示N不是守形数。
样例输入
6 11
样例输出
Yes! No!
#include<stdio.h>
#include<string>
#include<sstream>
#include<iostream>
using namespace std;
int main()
{int n;int m;string s1,s2;while(scanf("%d",&n)!=EOF){ stringstream ss,ss1;m=n*n;ss<<n;ss>>s1;ss1<<m;ss1>>s2;/*cout<<"s1="<<s1<<" s2="<<s2<<endl;cout<<string::npos-s1.length()<<endl;cout<<s2.find(s1)+s1.length()<<endl;cout<<s2.length()<<endl;*/if(s2.find(s1)!=string::npos){if(s2.find(s1)+s1.length()==s2.length()){printf("Yes!\n");}else{printf("No!\n");}}else{printf("No!\n");}}return 0;
}