如何使用+-×÷ ()连接六个6使计算结果等于17?有哪些思路?

论坛 期权论坛 知乎     
知乎de用户   2019-8-18 00:57   8963   5
转载声明:本文由互联网用户自发贡献,部分转载来源来自知乎(zhihu.com),强烈建议您访问知乎查看完整内容。本社区不拥有所有权,也不承担任何法律责任。如有侵权,请联系optbbs@163.com。一经查实,即刻删除。
分享到 :
0 人收藏

5 个回复

倒序浏览
2#
热心回应  16级独孤 | 2019-8-18 00:57:05 发帖IP地址来自
谢邀。
如果你学过一点算法,这类问题是很好解决的。
我曾写过一个二十四点计算器,由于实现方法相对通用,改了几个参数就可以解决这个问题。
下面上代码:
[code]#include #include #include typedef std::vector state;struct record{ int digitX, digitY; char operatorZ; record() {  digitX = 0, digitY = 0, operatorZ = ' '; } record(int _digitX, int _digitY, char _operatorZ) {  digitX = _digitX, digitY = _digitY, operatorZ = _operatorZ; } void output() {  int resultV;  if (operatorZ == '+') resultV = digitX + digitY;  else if (operatorZ == '-') resultV = digitX - digitY;  else if (operatorZ == '*') resultV = digitX * digitY;  else if (operatorZ == '/') resultV = digitX / digitY;  std::cout
3#
热心回应  16级独孤 | 2019-8-18 00:57:06 发帖IP地址来自
如何使六个6等于17用+-×÷ (),有哪些思路?由于没有注明十进制,我歪个楼,假设29进制十进制 36 = 二十九进制 17


6+6+6+6+6+6=17


4#
热心回应  16级独孤 | 2019-8-18 00:57:07 发帖IP地址来自
刚好无聊,我来个手动列举法。
先化简。6个6表示17,即为5个(或3个或1个,加一下减一下大小不变,你懂我意思吧)6表示102、23、11(去掉小数,因为太难算了)
即为用4个6表示:612、108、96、138、29、5、66
(或2个6,但显然2个6表示不出,你懂我意思吧)
(决斗麻袋!这里出现了一个奇怪的数字!66!要是说这算两个6合在一起,形成66/6+6-6+6...强行算个解)


继续算:即为用3个6表示:
等等,3个6相乘等于216,此处只要小于216的数就行。
所以用3个(或1个)6表示出:102,33,11,114,18,90,16,132,144,35,174,-1,30,72,60
这下好办了。我们给三个6附上+-*/还有括号排列组合:

3个6能表示出这么多!
再跟上面的对照一下,发现重合的数有:30、72、18。
倒着推,得出:
(6*6-6)/6+6+6=17
((6+6)*6-6)/6+6=17
((6+6+6)*6-6)/6=17
还有66/6+6-6+6=17
不知道算少了没
5#
热心回应  16级独孤 | 2019-8-18 00:57:08 发帖IP地址来自
考虑到用 5 个 6 很容易得到 17:
我们需要做的是再加一个 6,而不改变算式的结果。


同时我们注意到:
根据分配律得知:
由此可得到该问题的一个解。
6#
热心回应  16级独孤 | 2019-8-18 00:57:09 发帖IP地址来自
这么简单的问题为什么要写得这么长......看着不觉得难受吗?
随手写的DP,一共不到30行:
[code]#include #include #include #include int main() {    auto dp = std::vector(7);    dp[1][6] = std::string("6");    for (auto i=2; i
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:55334
帖子:27423
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP