finish 34
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "euler34"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut hm = HashMap::new();
|
||||||
|
for i in 0..10 {
|
||||||
|
hm.insert(i, factorial(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut result = vec![];
|
||||||
|
|
||||||
|
for i in 3..1_000_000_u64 {
|
||||||
|
if i.to_digits()
|
||||||
|
.iter()
|
||||||
|
.map(|d| hm.get(d).unwrap())
|
||||||
|
.sum::<u64>()
|
||||||
|
== i
|
||||||
|
{
|
||||||
|
result.push(i);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
println!("{}", result.iter().sum::<u64>())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn factorial(x: u64) -> u64 {
|
||||||
|
if x == 0 {
|
||||||
|
1
|
||||||
|
} else if x == 1 {
|
||||||
|
x
|
||||||
|
} else {
|
||||||
|
x * factorial(x - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trait ToDigits {
|
||||||
|
fn to_digits(&self) -> Vec<u64>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ToDigits for u64 {
|
||||||
|
fn to_digits(&self) -> Vec<u64> {
|
||||||
|
self.to_string()
|
||||||
|
.chars()
|
||||||
|
.map(|c| c.to_digit(10).unwrap() as u64)
|
||||||
|
.collect()
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user