#1 - 2020-2-15 18:51
CureDovahkinn🤔 (プリキュアなりたい)
给定一个整数n,输出一个由循环的“114514”组成的四则运算(+-*/)算式,可包含括号。
*必须为完整的114514组成
*挑战:使用尽可能少的114514
例:
输入:142857
输出:“114514+1*14514+1*14514-114-514-(1-1*4*5)*(1-4)”
#2 - 2020-2-15 18:54
(关于我被绑架到Bangumi当不认真样本这件事 ...)
恶 臭 自 动 证 明 机
#2-1 - 2020-2-15 19:18
#2-2 - 2020-4-3 13:31
#3 - 2020-2-15 19:11
Poly(input size)(也就是polylog(n))的答案是肯定存在的,只需注意到我们有114514/114514=1,于是可以用Theta(n)长度的式子"1+1+...+1"表示数字n,此外(114514+114514)/114514=2,然后就可以polylog地把二进制表示给写下来了。
#3-1 - 2020-2-15 19:19
CureDovahkinn🤔
再加一个条件,尽可能少的114514呢……
#3-2 - 2020-2-15 19:27
[已注销]
CureDovahkinn🤔 说: 再加一个条件,尽可能少的114514呢……
那可能没法算太快了
#3-3 - 2020-2-15 19:30
CureDovahkinn🤔
诚信肥肥 说: 那可能没法算太快了
结果更优雅(臭)
#3-4 - 2020-2-15 21:00
⏳TraceBack⏳
主席出手.jpg(莫名有种爽文的感觉
#4 - 2020-2-15 19:18
(mEtAyAyYEaye sphaela/.)
这道题不太严谨啊,存在多个不同的答案
#4-1 - 2020-2-15 19:20
CureDovahkinn🤔
只需要任意一条可行的即可
#5 - 2020-2-15 19:22
(一个纠结的面瘫伪宅)
应该问用最少的运算得到n,然后貌似就可以用动态规划了
#5-1 - 2020-2-15 19:26
CureDovahkinn🤔
补充了尽可能用最少的114514
#5-2 - 2020-2-15 19:40
windrises
CureDovahkinn🤔 说: 补充了尽可能用最少的114514
拍脑袋想的
1、二分法枚举最少的次数N N属于[1, n] 因为最多n个114514就够了
二分的合理性在于:如果N1个能够达成目的,那么对于任意一个N2 > N1肯定能完成,因为可以往后加上(N2 - N1)个((1-1) * 4514) = 0
2、对于每个枚举的N,使用动态规划,从初始为0正推或者结果为n倒推
dp[N] = n
dp[0] = 0
dp[N] 由 dp[N-1] 与一个 114514 通过某种方法得到,关键就是这里,要枚举的可能性很多
#5-3 - 2020-2-15 19:49
[已注销]
windrises 说: 拍脑袋想的
1、二分法枚举最少的次数N N属于[1, n] 因为最多n个114514就够了
二分的合理性在于:如果N1个能够达成目的,那么对于任意一个N2 > N1肯定能完成,因为可以往后加上(N2 ...
当然不是这样子的。。答案应该具有这样的性质:把对应的表达式树建出来,对于每一个子树对应的子表达式e,假设e运算完等于x,那么e应该是所有运算得到x的恶臭表达式(但是可以有一个不完整的前缀和后缀)当中最短的那一个。
#5-4 - 2020-2-15 19:50
windrises
windrises 说: 拍脑袋想的
1、二分法枚举最少的次数N N属于[1, n] 因为最多n个114514就够了
二分的合理性在于:如果N1个能够达成目的,那么对于任意一个N2 > N1肯定能完成,因为可以往后加上(N2 ...
仔细一想应该是暴力枚举。。。不是动态规划
#5-5 - 2020-2-15 20:00
CureDovahkinn🤔
诚信肥肥 说: 当然不是这样子的。。答案应该具有这样的性质:把对应的表达式树建出来,对于每一个子树对应的子表达式e,假设e运算完等于x,那么e应该是所有运算得到x的恶臭表达式(但是可以有一个不完整的前缀和后缀)当中最...
也是拍脑袋,觉得应该先根据n与114514的大小对比在用不同的算法,n<114514一种算法,大于114514可以先用n减去114514的倍数,在用n<114514的算法
#6 - 2020-2-15 19:27
枚举,数字之间填运算符
#7 - 2020-2-15 19:28
(DD雷达搜寻中...?)
太臭了
#8 - 2020-2-15 20:49
(​​​​)
感觉这类问题一般不存在多项式时间的解法。
#9 - 2020-2-15 20:49
不懂,mark一下,感觉已经超过leetcode hard难度了(bgm38)
#10 - 2020-2-15 21:05
对我班计算机科学家们的数学课扎实水平感到深深的痛心!
#10-1 - 2020-2-15 21:05
#10-2 - 2020-2-15 21:50
[已注销]
Oshino 说: (先占个位)
然后掏出一个co-NP completeness的证明?(雾)
#10-3 - 2020-2-15 22:07
已注销
诚信肥肥 说: 然后掏出一个co-NP completeness的证明?(雾)
抱歉是我震惊体了

因为这个算法的可行性的证明,等价于用 114514 构造 1 的可行性
所以我本来以为大家卡住的技术细节是因为,
对 GCD 的性质及推导 GCD 时构造的群不熟悉
而这个不熟悉,蕴含初等数论/群论两门基础数学课的不扎实

但是自己动笔后发现技术上不涉及 GCD 相关,也有很多种用 114514 做出 1 的办法(比如肥肥君在 #3 给的结构就很简洁漂亮)是我震惊体了
#10-4 - 2020-2-15 22:16
​​​​
Oshino 说:
别的不说,1换成秦九韶就能减少若干个114514
#10-5 - 2020-2-15 22:29
已注销
✨️十一番目の☀️✨️ 说: 别的不说,1换成秦九韶就能减少若干个114514...
嗯确实,但是因为我不熟悉秦这个结构所以没用

我只是对数学上算法存在性的做了确认,算法的效率优化/效果优化在我熟悉的领域之外所以抱歉没法深入讨论

突然想到的无关吐槽:
数学的学术共同体的范式中,从无限到有限被视为意义重大的工作,而从有限到更小的有限的优化则被排除在“有价值的问题”之外。学界对张益唐和陶哲轩在孪生素数上的工作的不同态度就是实例

打着审美的旗号来逃避繁琐的工作,把问题遗留给工业界
#10-6 - 2020-2-15 22:51
​​​​
Oshino 说: 嗯确实,但是因为我不熟悉秦这个结构所以没用

我只是对数学上算法存在性的做了确认,算法的效率优化/效果优化在我熟悉的领域之外所以抱歉没法深入讨论

突然想到的无关吐槽:
数学的学术共同体的范式中,从无...
如果你能确认Polytime算法的存在性,那我也是很关心的(bgm38)
#10-7 - 2020-2-15 22:55
[已注销]
Oshino 说:
我在3#写的意思是,你的这个第一步就别用114514-进制了,直接用二进制不香🐴
#10-8 - 2020-2-15 22:59
已注销
诚信肥肥 说: 我在3#写的意思是,你的这个第一步就别用114514-进制了,直接用二进制不香🐴
流石!

是我的操作业余了(bgm38)

既视感:
大年初一的时候,一个读 CS 的朋友微信我 “嘿给你看个脑筋急转弯”
也是发了张图过去,对面回我

“你这个方法改成用 2 进制不是能简洁不少吗?"

经历两次同样的尴尬(bgm38)
#11 - 2020-2-15 22:41
(飞得高,飞得低,学习再学习,多少大秘密 ... ... ... ... . ...)
1. 114514 插入四则运算和括号后,结果应该是有限的吧,应该能把这个算出来
2. 根据上面的所有输出打表,然后从大到小做一个加法形式的处理?

感觉我是整栋楼最笨的
#11-1 - 2020-2-15 23:15
Black_tea
结果是有限的,而且114514的最小循环次数应该也是有解的,现在的问题是证明这个能否在多项式时间内完成。
(这根本不是算法题(bgm38)
#12 - 2020-2-18 13:23
好麻烦(bgm38)(bgm38)Mark一下(bgm38)(bgm38)看看大佬做的
#13 - 2020-4-3 12:08
#14 - 2020-4-3 13:28
(DD雷达搜寻中...?)
itorr/homo: 💩「恶臭数字论证器」任意数字恶臭化工具
https://github.com/itorr/homo
#14-1 - 2020-4-5 13:55
Leokery
这不是打的表吗
#14-2 - 2020-4-6 14:29
CureDovahkinn🤔
甚至做出网页了
#15 - 2020-4-5 13:57
如果加一个限制条件比如114514之间只能是+-就会好做很多,但这个我只会二分+爆搜
#15-1 - 2020-4-6 14:27
CureDovahkinn🤔
只包含+-也是符合题目的啊(