init
This commit is contained in:
6
problems/p4/Cargo.toml
Normal file
6
problems/p4/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
||||
[package]
|
||||
name = "p4"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
41
problems/p4/src/main.rs
Normal file
41
problems/p4/src/main.rs
Normal 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}");
|
||||
}
|
||||
Reference in New Issue
Block a user