2025-03-08-学习记录-CC-PTA-习题10-1-判断满足条件的三位数
目录
2025-03-08 学习记录–C/C++-PTA 习题10-1 判断满足条件的三位数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
裁判测试程序样例:
#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) { // 检查平方根的平方是否等于 n
return 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++; // 位数加 1
n /= 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
语言 判断一个数是否是完全平方数,请查看 。