目录

2025-03-08-学习记录-CC-PTA-习题10-1-判断满足条件的三位数

2025-03-08 学习记录–C/C++-PTA 习题10-1 判断满足条件的三位数

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

https://i-blog.csdnimg.cn/direct/96265a6dc5a34a7a9290cab018eb09f5.png

裁判测试程序样例:

#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; // 返回满足条件的数的个数
}

https://i-blog.csdnimg.cn/direct/7c17e891f2964b59b27537aaffb38bca.png

三、知识点 ⭐️

C 语言 判断一个数是否是完全平方数,请查看 。

https://i-blog.csdnimg.cn/direct/54a647972e224f4f90d81ba7282b79fc.jpeg