init
This commit is contained in:
7
problems/p34/Cargo.toml
Normal file
7
problems/p34/Cargo.toml
Normal file
@@ -0,0 +1,7 @@
|
||||
[package]
|
||||
name = "p34"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
rayon = "1.11.0"
|
||||
30
problems/p34/src/main.rs
Normal file
30
problems/p34/src/main.rs
Normal file
@@ -0,0 +1,30 @@
|
||||
use rayon::prelude::*;
|
||||
|
||||
fn is_fact_sum(num: u32) -> bool {
|
||||
let factorials = [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880];
|
||||
let mut digits = Vec::new();
|
||||
let mut a = num % 10;
|
||||
let mut b = num / 10;
|
||||
digits.push(a);
|
||||
while b != 0 {
|
||||
a = b % 10;
|
||||
b /= 10;
|
||||
digits.push(a);
|
||||
}
|
||||
let fact_sum: u32 = digits.iter().map(|&x| factorials[x as usize]).sum();
|
||||
fact_sum == num
|
||||
}
|
||||
#[test]
|
||||
fn test_is_fact_sum() {
|
||||
assert!(is_fact_sum(145));
|
||||
assert!(!is_fact_sum(146));
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// 小于7位
|
||||
let sum: u32 = (3..9999999)
|
||||
.into_par_iter()
|
||||
.filter(|&x| is_fact_sum(x))
|
||||
.sum();
|
||||
println!("{sum}");
|
||||
}
|
||||
Reference in New Issue
Block a user