diff --git a/players/Hykilpikonna/README.md b/players/Hykilpikonna/README.md index 5e7e1a3..d2d44f2 100644 --- a/players/Hykilpikonna/README.md +++ b/players/Hykilpikonna/README.md @@ -103,3 +103,36 @@ Sympy 的解析 Latex 的方法会一直卡住, Sage 看了下但是不知道怎样在程序里面控制w 还有就是因为今年选的 AP Calculus BC 也会用这个计算器解积分啦w +
+ +## 19. 超恶臭的数字论证器 (确信) + +原来官方解法那么简单哇w +代码短 20 倍了!!!(╯‵□′)╯︵┻━┻ + +### 失败的解法 + +1. 所有的符号组合穷举一遍(包含不加符号的情况但是不包含括号嗯) +2. 获得距离最短的,然后用 `-~` 和 `~-` 来补上差值w + +这样很大的数就要垫很长的 `-~` 所以不行啦w +(不构思就写代码吃亏惹 +1 + +### 成功但是很长的解法 + +1. 把目标分解成质因子(Eg. 1078 → `[2,7,7,11]`) +2. 穷举所有的数字数 n(Eg. `[11,4,5,1,4]` 是六个数字) +3. 把分解后的质因子转成 n 个因子(Eg. `[2,7,7,11]` 转成五个数字的话就是 `[1,2,7,7,11]`) +4. 穷举这个数字数的所有的数字组合(Eg. `[11,4,5,1,4]` 和 `[1,14,5,1,4]` 是两种组合) +5. 穷举所有的因子排列(Eg. `[1,2,7,7,11]` 和 `[11,2,7,1,7]` 是两种不同排列) +6. 获得因子排列和数字组合之间的距离(Eg. `[11,4,5,1,4]` 和 `[11,2,7,1,7]` 的距离是 7) +7. 取最短距离的组合和因子排列w +8. 把每一个数字离因子的距离用 `-~` 和 `~-` 补上(Eg. 4 → 2: `~-~-4`) +9. 合起来组成算式w(Eg. `11*~-~-4*~-~5*1*~-~-~4`) +10. 如果够短的话就提交啦w +11. 如果过长的话回到第一步用 x - 1 重新算然后用 `-~` 给整个算式补上减掉的 1 嗯w + +一共写了 288 行 🌚 +果然不应该想太多吧w ;-; +但是至少从 0 到 114514 没有一个数字解不出来啦w +