合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻
一、題目描述 ??
裁判測試程序樣例:
#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
語言 判斷一個數是否是完全平方數,請查看我的另一篇文章。
?