From e615d4f611b4400589d14fd76b307faccd1b4f9f Mon Sep 17 00:00:00 2001 From: li_chx Date: Wed, 11 Mar 2026 08:47:20 +0800 Subject: [PATCH] =?UTF-8?q?1009.=20=E5=8D=81=E8=BF=9B=E5=88=B6=E6=95=B4?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E5=8F=8D=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 40 ++++++++-------------------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9431a8e..d3b1daf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,44 +1,20 @@ +use std::ops::BitXor; + struct Solution; mod arr; impl Solution { - pub fn number_of_stable_arrays(zero: i32, one: i32, limit: i32) -> i32 { - let md = 1e9 as i64 + 7; - let mut dp = vec![vec![vec![0; 2]; one as usize + 1]; zero as usize + 1]; - for i in 1..=limit as usize { - if i <= one as usize { - dp[0][i][1] = 1; - } - if i <= zero as usize { - dp[i][0][0] = 1; - } + pub fn bitwise_complement(n: i32) -> i32 { + let mut a = 1; + for i in 1.. n.count_ones() + n.count_zeros() - n.leading_zeros() { + a |= 1 << i; } - for i in 1..=zero as usize { - for j in 1..=one as usize { - dp[i][j][0] = (((dp[i - 1][j][0] + dp[i - 1][j][1] - - if i as i32 - limit - 1 >= 0 { - dp[i - limit as usize - 1][j][1] - } else { - 0 - }) as i64 - + md) - % md) as i32; - dp[i][j][1] = (((dp[i][j - 1][0] + dp[i][j - 1][1] - - if j as i32 - limit - 1 >= 0 { - dp[i][j - limit as usize - 1][0] - } else { - 0 - }) as i64 - + md) - % md) as i32; - } - } - ((dp[zero as usize][one as usize][0] as i64 + dp[zero as usize][one as usize][1] as i64) % md) as i32 + n.bitxor(a) } } fn main() { - let result = Solution::number_of_stable_arrays(39, 20, 18); + let result = Solution::bitwise_complement(0); // let result = Solution::number_of_stable_arrays(200, 200, 25); println!("{:?}", result); }