题解 | #守形数# 记录数位个数
守形数
https://www.nowcoder.com/practice/99e403f8342b4d0e82f1c1395ba62d7b?tpId=69&tqId=29664&tPage=1&rp=1&ru=/ta/hust-kaoyan
#include <cstdio> #include <iostream> #include <cmath> #include <queue> using namespace std; int main() { int n; while (scanf("%d",&n)!=EOF) { int sq=pow(n,2); int n1=n; int digit=0; while(n1!=0) { digit++; n1/=10; } int sq1=pow(10,digit); if(n==sq%sq1) { printf("Yes!"); } else{ printf("No!"); } } }
设输入的数为n,循环整除10获得n的位数digit,再用(n^2)%(10^digit)与n比较。