题目已经说明了2<=N<100
故可分为以下两种情况分析:
①2<=N<=10:当N=5或N=6时,满足守形数的条件,返回真,其余一位数不满足,返回假
②10<=N<100:当N>=10时,因为都是两位数,故其平方对100取模即可提取出最低的两位数,与i对比若相同则满足条件,返回真
③1、2都不满足返回假
#include <iostream> #include <cstdio> using namespace std; bool check(int i){ if(i == 5 || i == 6){ return true; } if(i >= 10){ if((i * i) % 100 == i){ return true; } } return false; } int main(){ int n; while(~scanf("%d", &n)){ if(check(n)){ printf("Yes!\n"); }else{ printf("No!\n"); } } return 0; }