描述

自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n(包括n)以内的自守数的个数

数据范围: 1n10000 

输入描述:

int型整数

输出描述:

n以内自守数的数量。

示例1

输入:
6
输出:
4
说明:
有0,1,5,6这四个自守数      

示例2

输入:
1
输出:
2
说明:
有0, 1这两个自守数 
代码部分:
#include <stdio.h>
#include <math.h>
//以下是Senky的代码
int cal_bite(int i) { //返回i的位数
    int bite = 1;
    while (i / 10) {
        i = i / 10;
        bite++;
    }
    return bite;
}

int is_thenumber(int i, int bite) {//返回1则是自守数
    int ret = 0;
    int num = i * i; //i的平方
    if (num % ((int)pow(10,bite)) == i)  
        ret =1; //i平方取末尾i位数等于i就是自守数
    return ret;
}

int main() {
    int n = 0;
    scanf("%d", &n);
    int bite = 0;//当前数字的位数
    int count = 0;
    for (int i = 0; i <= n; i++) {
        bite = cal_bite(i);//获取位数
        count += is_thenumber(i, bite);//计数器
    }
    printf("%d", count);
    return 0;//编辑于2022/10/12
}
总结
①难度不大,保持手感 
 当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;