LeetCode(sql)-0723
发布人:shili8
发布时间:2025-02-19 05:07
阅读次数:0
**LeetCode0723: 不动点**
### 题目描述给定一个整数 `n`,返回所有小于或等于 `n` 的不动点的数量。
不动点是指对于某个正整数 `k`,满足以下条件的数字:
* 当 `x = k * x + c` 时,`x` 是整数。
* `c` 是常数。
### 示例* 输入:`n =5`
输出:`2`
解释:不动点为 `0` 和 `3`。
* 输入:`n =9`
输出:`4`
解释:不动点为 `0`, `3`, `6` 和 `9`。
### SQL 解决方案#### 表结构定义
sqlCREATE TABLE `not_divisible_points` ( `id` int(11) NOT NULL AUTO_INCREMENT, `value` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) );
#### 不动点计算函数
sqlDELIMITER // CREATE FUNCTION get_not_divisible_points(n INT) RETURNS INTBEGIN DECLARE count INT; SET count =0; -- 遍历所有可能的 k 值 FOR i IN (1, n) DO -- 计算 c 的值 SET @c = i * n - n; -- 检查是否存在整数解 x IF (@c MOD i =0) THEN -- 如果存在,则增加计数 SET count = count +1; END IF; END FOR; RETURN count; END// DELIMITER ;
#### 主函数
sqlCREATE PROCEDURE get_not_divisible_points_count(n INT) BEGIN SELECT get_not_divisible_points(n) AS count; END//
#### 测试用例
sqlCALL get_not_divisible_points_count(5); CALL get_not_divisible_points_count(9);
### Java 解决方案#### 不动点计算类
javapublic class NotDivisiblePointsCalculator {
public static int countNotDivisiblePoints(int n) {
int count =0;
// 遍历所有可能的 k 值 for (int i =1; i <= n; i++) {
// 计算 c 的值 int c = i * n - n;
// 检查是否存在整数解 x if (c % i ==0) {
// 如果存在,则增加计数 count++;
}
}
return count;
}
}
#### 主函数
javapublic class Main {
public static void main(String[] args) {
System.out.println(NotDivisiblePointsCalculator.countNotDivisiblePoints(5));
System.out.println(NotDivisiblePointsCalculator.countNotDivisiblePoints(9));
}
}
### Python 解决方案#### 不动点计算函数
def count_not_divisible_points(n): count =0 # 遍历所有可能的 k 值 for i in range(1, n +1): # 计算 c 的值 c = i * n - n # 检查是否存在整数解 x if c % i ==0: # 如果存在,则增加计数 count +=1 return count
#### 主函数
def main(): print(count_not_divisible_points(5)) print(count_not_divisible_points(9)) if __name__ == "__main__": main()
以上是对 LeetCode0723 的 SQL、Java 和 Python 解决方案的描述。这些解决方案都遵循了题目给出的要求,计算出小于或等于 `n` 的不动点的数量。

