From 78a5ff8e113e73630dc9f0e23b586f9a2e565206 Mon Sep 17 00:00:00 2001 From: Xu Shaohua Date: Tue, 24 Sep 2024 18:25:19 +0800 Subject: [PATCH] leetcode: Add largest lcm --- math/src/primes.cpp | 21 ++++++ src/leetcode/0000.largest_lcm/Cargo.toml | 7 ++ src/leetcode/0000.largest_lcm/Makefile | 3 + src/leetcode/0000.largest_lcm/index.md | 12 ++++ src/leetcode/0000.largest_lcm/main | Bin 0 -> 127888 bytes src/leetcode/0000.largest_lcm/main.cpp | 81 ++++++++++++++++++++++ src/leetcode/0000.largest_lcm/src/main.rs | 27 ++++++++ 7 files changed, 151 insertions(+) create mode 100644 math/src/primes.cpp create mode 100644 src/leetcode/0000.largest_lcm/Cargo.toml create mode 100644 src/leetcode/0000.largest_lcm/Makefile create mode 100644 src/leetcode/0000.largest_lcm/index.md create mode 100755 src/leetcode/0000.largest_lcm/main create mode 100644 src/leetcode/0000.largest_lcm/main.cpp create mode 100644 src/leetcode/0000.largest_lcm/src/main.rs diff --git a/math/src/primes.cpp b/math/src/primes.cpp new file mode 100644 index 000000000..53e07173a --- /dev/null +++ b/math/src/primes.cpp @@ -0,0 +1,21 @@ + +#include + +#include + +std::vector get_primes(int n) { + assert(n > 0); + std::vector primes(true, n + 1); + for (int i = 2; i < n + 1; ++i) { + if (!primes[i]) { + continue; + } + for (int j = i + 1; j < n + 1; ++j) { + if (j % i == 0) { + primes[j] = false; + } + } + } + + return {}; +} diff --git a/src/leetcode/0000.largest_lcm/Cargo.toml b/src/leetcode/0000.largest_lcm/Cargo.toml new file mode 100644 index 000000000..c4a530e53 --- /dev/null +++ b/src/leetcode/0000.largest_lcm/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "lc-0000-largest-lcm" +version = "0.1.0" +edition = "2021" +publish = false + +[dependencies] diff --git a/src/leetcode/0000.largest_lcm/Makefile b/src/leetcode/0000.largest_lcm/Makefile new file mode 100644 index 000000000..b686101fc --- /dev/null +++ b/src/leetcode/0000.largest_lcm/Makefile @@ -0,0 +1,3 @@ + +build: main.cpp + g++ -g main.cpp -o main diff --git a/src/leetcode/0000.largest_lcm/index.md b/src/leetcode/0000.largest_lcm/index.md new file mode 100644 index 000000000..c3046ee07 --- /dev/null +++ b/src/leetcode/0000.largest_lcm/index.md @@ -0,0 +1,12 @@ + +# 求能整除1-n的最小正整数 + +```text +输入一个n (1 <= n <= 10000), +求能整除1-n的最小正整数,即最小公倍数. +由于数可能比较大,输出结果 mod 987654321. + +例子: +输入: 3 +输出: 6 (6是能整除1, 2, 3的最小正整数) +``` diff --git a/src/leetcode/0000.largest_lcm/main b/src/leetcode/0000.largest_lcm/main new file mode 100755 index 0000000000000000000000000000000000000000..30cb53e76929a4fac3eeced1f22b75488870b5a3 GIT binary patch literal 127888 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 literal 0 HcmV?d00001 diff --git a/src/leetcode/0000.largest_lcm/main.cpp b/src/leetcode/0000.largest_lcm/main.cpp new file mode 100644 index 000000000..2b901e9f5 --- /dev/null +++ b/src/leetcode/0000.largest_lcm/main.cpp @@ -0,0 +1,81 @@ +// Copyright (c) 2024 Xu Shaohua . All rights reserved. +// Use of this source is governed by General Public License that can be found +// in the LICENSE file. + +#include + +#include +#include + +int solution(int n) { + // 解题思路: + // 1. 先计算 1..n 之间的所有质数 + // 2. 创建一个数组, 用于存放每个质因数的最大出现次数 + // 3. 遍历 1..n 之间所有整数, 进行因式分解, 然后更新最大质因数数组 + // 4. 将最大质因数数组中的值相乘, 即可得到结果. + + // 得到质数 + const int max_num = n + 1; + std::vector primes(max_num, true); + for (int i = 2; i <= n; ++i) { + if (!primes[i]) { + continue; + } + for (int j = i + 1; j <= n; ++j) { + if (j % i == 0) { + primes[j] = false; + } + } + } + + std::vector max_factors(max_num, 0); + // 遍历所有整数 + for (int num = 2; num <= n; ++num) { + // 遍历所有质数 + int rem = num; + for (int j = 2; j <= num; ++j) { + if (!primes[j]) { + continue; + } + + // 确定当前质数作为质因数的次数. + int factor_count = 0; + while (rem % j == 0) { + rem /= j; + factor_count += 1; + } + + // 更新质因数的最大个数 + if (factor_count > max_factors[j]) { + max_factors[j] = factor_count; + } + + // 当前整数 num 已经被除尽了 + if (rem == 0) { + break; + } + } + } + + // 最后, 计算最大质因数的积. + int ans = 1; + const int kModular = 987654321; + for (int num = 2; num <= n; ++num) { + if (max_factors[num] > 0) { + for (int i = 0; i < max_factors[num]; ++i) { + ans = ans * num % kModular; + } + } + } + + return ans; +} + +void check_solution() { + assert(solution(3) == 6); +} + +int main() { + check_solution(); + return 0; +} diff --git a/src/leetcode/0000.largest_lcm/src/main.rs b/src/leetcode/0000.largest_lcm/src/main.rs new file mode 100644 index 000000000..9edcfeb7d --- /dev/null +++ b/src/leetcode/0000.largest_lcm/src/main.rs @@ -0,0 +1,27 @@ +// Copyright (c) 2024 Xu Shaohua . All rights reserved. +// Use of this source is governed by General Public License that can be found +// in the LICENSE file. + +pub fn solution1() { + todo!(); +} + +pub type SolutionFn = fn(); + +fn check_solution(_func: SolutionFn) { + todo!(); +} + +fn main() { + check_solution(solution1); +} + +#[cfg(test)] +mod tests { + use super::{check_solution, solution1}; + + #[test] + fn test_solution1() { + check_solution(solution1); + } +}