Guest User

Untitled

a guest
May 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.18 KB | None | 0 0
  1. use std::collections::HashMap;
  2.  
  3. fn fill_count(n: usize, min: usize, map: &mut HashMap<usize, usize>) -> usize {
  4. if n < min {
  5. 0
  6. } else {
  7. let mut total = 0;
  8. let mut len = n;
  9. let mut count = 1;
  10. while len >= min {
  11. total += count;
  12. if n - len > min {
  13. let mut rem = (n - len) - 1;
  14. while rem >= min {
  15. if let Some(&next) = map.get(&rem) {
  16. total += next;
  17. } else {
  18. let sum = fill_count(rem, min, map);
  19. map.insert(rem, sum);
  20. total += sum;
  21. }
  22. rem -= 1;
  23. }
  24. }
  25. count += 1;
  26. len -= 1;
  27. }
  28.  
  29. total
  30. }
  31. }
  32.  
  33.  
  34. fn problem_114(n: usize) -> usize {
  35. let mut map = HashMap::new();
  36. fill_count(n, 3, &mut map) + 1
  37. }
  38.  
  39. fn problem_115() -> usize {
  40. let mut map = HashMap::new();
  41. let mut n = 100;
  42. while fill_count(n, 50, &mut map) + 1 < 1_000_000 {
  43. n += 1;
  44. }
  45.  
  46. n
  47. }
  48.  
  49. fn main() {
  50. println!("{}", problem_114(50));
  51. println!("{}", problem_115());
  52. }
Add Comment
Please, Sign In to add comment