[+] WriteUp for 超精巧的数字论证器
This commit is contained in:
@@ -103,3 +103,36 @@ Sympy 的解析 Latex 的方法会一直卡住,
|
||||
Sage 看了下但是不知道怎样在程序里面控制w
|
||||
还有就是因为今年选的 AP Calculus BC 也会用这个计算器解积分啦w
|
||||
|
||||
<br>
|
||||
|
||||
## 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user