diff --git a/src/euler24/Cargo.toml b/src/euler24/Cargo.toml new file mode 100644 index 0000000..59af77f --- /dev/null +++ b/src/euler24/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "euler24" +version = "0.1.0" +edition = "2024" + +[dependencies] +itertools = "*" diff --git a/src/euler24/src/main.rs b/src/euler24/src/main.rs new file mode 100644 index 0000000..01696b4 --- /dev/null +++ b/src/euler24/src/main.rs @@ -0,0 +1,8 @@ +use itertools::Itertools; + +fn main() { + let digits = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; + let mut data: Vec<_> = digits.into_iter().permutations(10).collect(); + data.sort_unstable(); + println!("{:?}", data[999_999]); +} diff --git a/src/euler25/Cargo.toml b/src/euler25/Cargo.toml new file mode 100644 index 0000000..5384e78 --- /dev/null +++ b/src/euler25/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "euler25" +version = "0.1.0" +edition = "2024" + +[dependencies] +num-bigint = "*" +num-traits = "*" diff --git a/src/euler25/src/main.rs b/src/euler25/src/main.rs new file mode 100644 index 0000000..45127e9 --- /dev/null +++ b/src/euler25/src/main.rs @@ -0,0 +1,21 @@ +use num_bigint::BigUint; +use num_traits::One; + +const MAX_IDX: usize = 4782; + +fn main() { + let number = fib(MAX_IDX - 1); + let s = number.to_str_radix(10); + println!("{}: {}: {}", MAX_IDX, fib(MAX_IDX - 1), s.len()); +} + +fn fib(n: usize) -> BigUint { + let mut f0 = BigUint::one(); + let mut f1 = BigUint::one(); + for _ in 0..n { + let f2 = f0 + &f1; + f0 = f1; + f1 = f2; + } + f0 +}