描述
自守数是指一个数的平方的尾数等于该数自身的自然数。例如:25^2 = 625,76^2 = 5776,9376^2 = 87909376。请求出n(包括n)以内的自守数的个数
数据范围: 1≤n≤10000
输入描述:
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 }
总结:
①难度不大,保持手感 ;
② 当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;