20250423 finished.
This commit is contained in:
parent
cd4b5018bd
commit
c877f1c0ae
|
@ -613,3 +613,6 @@ mod p2563_count_the_number_of_fair_pairs;
|
||||||
mod p781_rabbits_in_forest;
|
mod p781_rabbits_in_forest;
|
||||||
|
|
||||||
mod p2145_count_the_hidden_sequences;
|
mod p2145_count_the_hidden_sequences;
|
||||||
|
|
||||||
|
mod p1399_count_largest_group;
|
||||||
|
mod p2338_count_the_number_of_ideal_arrays;
|
||||||
|
|
49
src/problem/p1399_count_largest_group.rs
Normal file
49
src/problem/p1399_count_largest_group.rs
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
/**
|
||||||
|
* [1399] Count Largest Group
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn count_largest_group(n: i32) -> i32 {
|
||||||
|
let mut map = HashMap::new();
|
||||||
|
(1..=n)
|
||||||
|
.into_iter()
|
||||||
|
.map(|mut x| {
|
||||||
|
let mut result = 0;
|
||||||
|
|
||||||
|
while x > 0 {
|
||||||
|
result += x % 10;
|
||||||
|
x = x / 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
result
|
||||||
|
})
|
||||||
|
.fold(&mut map, |map, i| {
|
||||||
|
let entry = map.entry(i).or_insert(0);
|
||||||
|
*entry += 1;
|
||||||
|
|
||||||
|
map
|
||||||
|
});
|
||||||
|
|
||||||
|
let max_count = map.values().max().unwrap();
|
||||||
|
map.values().filter(|x| x == &max_count).count() as i32
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_1399() {
|
||||||
|
assert_eq!(4, Solution::count_largest_group(13));
|
||||||
|
assert_eq!(2, Solution::count_largest_group(2));
|
||||||
|
assert_eq!(6, Solution::count_largest_group(15));
|
||||||
|
assert_eq!(5, Solution::count_largest_group(24));
|
||||||
|
}
|
||||||
|
}
|
81
src/problem/p2338_count_the_number_of_ideal_arrays.rs
Normal file
81
src/problem/p2338_count_the_number_of_ideal_arrays.rs
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
/**
|
||||||
|
* [2338] Count the Number of Ideal Arrays
|
||||||
|
*/
|
||||||
|
pub struct Solution {}
|
||||||
|
|
||||||
|
// submission codes start here
|
||||||
|
|
||||||
|
const MOD: usize = 1_000_000_007;
|
||||||
|
const MAX_N: usize = 10010;
|
||||||
|
const MAX_P: usize = 15;
|
||||||
|
|
||||||
|
impl Solution {
|
||||||
|
pub fn ideal_arrays(n: i32, max_value: i32) -> i32 {
|
||||||
|
let mut result = 0usize;
|
||||||
|
let n = n as usize;
|
||||||
|
let (prime_sieves, dp) = Self::calculate_dp_array();
|
||||||
|
|
||||||
|
for x in 1..=max_value {
|
||||||
|
let mut current = 1;
|
||||||
|
for &p in prime_sieves[x as usize].iter() {
|
||||||
|
current = current * dp[n + p - 1][p] % MOD;
|
||||||
|
}
|
||||||
|
result = (result + current) % MOD;
|
||||||
|
}
|
||||||
|
|
||||||
|
result as i32
|
||||||
|
}
|
||||||
|
|
||||||
|
fn calculate_dp_array() -> (Vec<Vec<usize>>, Vec<Vec<usize>>) {
|
||||||
|
// 最小质因数列表
|
||||||
|
let mut sieves = vec![0; MAX_N];
|
||||||
|
|
||||||
|
for i in 2..MAX_N {
|
||||||
|
if sieves[i] == 0 {
|
||||||
|
for j in (i..MAX_N).step_by(i) {
|
||||||
|
sieves[j] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut prime_sieves = vec![vec![]; MAX_N];
|
||||||
|
for i in 2..MAX_N {
|
||||||
|
let mut x = i;
|
||||||
|
|
||||||
|
while x > 1 {
|
||||||
|
let p = sieves[x];
|
||||||
|
let mut current = 0;
|
||||||
|
while x % p == 0 {
|
||||||
|
x /= p;
|
||||||
|
current += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
prime_sieves[i].push(current);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut dp = vec![vec![0usize; MAX_P + 1]; MAX_N + MAX_P];
|
||||||
|
dp[0][0] = 1;
|
||||||
|
for i in 1..(MAX_N + MAX_P) {
|
||||||
|
dp[i][0] = 1;
|
||||||
|
for j in 1..(i.min(MAX_P) + 1) {
|
||||||
|
dp[i][j] = (dp[i - 1][j] + dp[i - 1][j - 1]) % MOD;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(prime_sieves, dp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// submission codes end
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_2338() {
|
||||||
|
assert_eq!(10, Solution::ideal_arrays(2, 5));
|
||||||
|
assert_eq!(11, Solution::ideal_arrays(5, 3));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user