1
0
This commit is contained in:
2026-02-04 11:15:03 +08:00
commit 8b20a5dd21
125 changed files with 4177 additions and 0 deletions

6
problems/p4/Cargo.toml Normal file
View File

@@ -0,0 +1,6 @@
[package]
name = "p4"
version = "0.1.0"
edition = "2024"
[dependencies]

41
problems/p4/src/main.rs Normal file
View File

@@ -0,0 +1,41 @@
fn is_palindrome(input: usize) -> bool {
if input != 0 && input % 10 == 0 {
return false;
}
let mut original = input;
let mut reversed = 0;
// 只反转数字的后半部分
while original > reversed {
reversed = reversed * 10 + original % 10;
original /= 10;
}
// 对于偶数位数字如original==reversed
// 对于奇数位数字如original==reversed/10去掉中间的数字
original == reversed || original == reversed / 10
}
fn main() {
let numbers: Vec<i32> = (100..=999).collect();
// 所有符合条件的组合(前面的数字大于后面的数字)
let descending_pairs: Vec<(i32, i32)> = numbers
.iter()
.flat_map(|&i| {
numbers
.iter()
.filter(move |&&j| i > j) // 确保i > j前面大于后面
.map(move |&j| (i, j))
})
.collect();
let mut result = 0;
for (i, j) in descending_pairs {
let number = i * j;
if is_palindrome(number as usize) && number > result {
result = number;
}
}
println!("{result}");
}