合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
裁判测试程序样例:
#include <stdio.h>
#include <math.h>int search( int n );int main()
{int number;scanf("%d",&number);printf("count=%d\n",search(number));return 0;
}/* 你的代码将被嵌在这里 */
输入样例
500
输出样例
count=6
二、代码(C语言)⭐️
// 判断一个数是否满足特定条件
int getNum(int n) {// 检查 n 是否是完全平方数int sqrtN = (int)sqrt(n); // 计算 n 的平方根并转换为整数if (sqrtN * sqrtN != n) { // 检查平方根的平方是否等于 nreturn 0; // 如果不是完全平方数,返回 0}int cnt = 0; // 用于记录 n 的位数int m = 0; // 用于记录满足条件的数字对的数量int numArr[3]; // 用于存储 n 的每一位数字(假设 n 是 3 位数)// 将 n 的每一位数字存储到 numArr 中while (n != 0) {numArr[cnt] = n % 10; // 取出最低位数字cnt++; // 位数加 1n /= 10; // 去掉最低位}// 检查是否有且仅有一对相邻数字相同for (int i = 0; i < cnt; i++) {if (numArr[i] == numArr[i + 1] || numArr[i] == numArr[i + 2]) {m++; // 如果找到相同的数字对,m 加 1}}// 判断是否满足条件if (m == 1) {return 1; // 如果有且仅有一对相同数字,返回 1}return 0; // 否则返回 0
}
// 统计满足条件的数的个数
int search(int n) {int cnt = 0; // 用于统计满足条件的数的个数// 遍历从 101 到 n 的所有数for (int i = 101; i <= n; i++) {if (getNum(i) == 1) { // 如果当前数满足条件cnt++; // 计数器加 1}}return cnt; // 返回满足条件的数的个数
}
三、知识点 ⭐️
C
语言 判断一个数是否是完全平方数,请查看我的另一篇文章。