当前位置:实例文章 » JAVA Web实例» [文章]LeetCode(sql)-0723

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` 的不动点的数量。

其他信息

其他资源

Top