思路

  1. 将原数和求平方的数和10取余,一位一位 判断是否相等
  2. 注意0也是自守数,因此最后输出时需要+1再输出

Answer

#include<stdio.h>

int main() {
    int val;
    int cnt=0;
    scanf("%d", &val);
    for (int i = 0; i <= val; i++) {
        int m = i;
        int n = i * i;
        while (m>0) {
            if ((m % 10) != (n % 10))break;
            m /= 10;
            n /= 10;
            if (m == 0) {
                cnt++;
            }
        }
    }
    printf("%d\n", cnt + 1);

}