|
发表于 2022-8-9 12:17:01
|
显示全部楼层
- use std::collections::BTreeMap;
- pub fn run() -> Result<(), Box<dyn std::error::Error>> {
- let mut map = BTreeMap::new();
- for mut x in 2..1000000u32 {
- let (i, mut n) = (x, 0u32);
- while x != 1 {
- if x < i {
- n += map.get(&x).unwrap();
- break;
- } else if x % 2 == 0 {
- x /= 2;
- n += 1
- } else {
- x = (3 * x + 1) / 2;
- n += 2
- }
- }
- map.insert(i, n);
- }
- let mut max = 0u32;
- let mut num = 0u32;
- for (k, v) in map {
- if v > max {
- max = v;
- num = k;
- }
- }
- println!("num = {num}, max = {max}");
- Ok(())
- }
复制代码
[Project Euler 14]
num = 837799, max = 524
[Task finished in 0.1754473s]
不知道链长为啥不一样…… |
|