【发布时间】:2015-10-07 02:55:50
【问题描述】:
通过使用 1 到 9 的 9 个数字,您应该找到使用乘法和加法获得 N 的方法的数量。
例如,如果给出 100,你会回答 7。
原因是有7种可能的方式。
100 = 1*2*3*4+5+6+7*8+9
100 = 1*2*3+4+5+6+7+8*9
100 = 1+2+3+4+5+6+7+8*9
100 = 12+3*4+5+6+7*8+9
100 = 1+2*3+4+5+67+8+9
100 = 1*2+34+5+6*7+8+9
100 = 12+34+5*6+7+8+9
如果给你这个问题,你会怎么开始?
【问题讨论】:
-
系统地思考问题。九位数字之间有八个位置。每个都可以被“*”、“+”或“”(串联)占据。您将需要在所有八个位置循环所有三种可能性。然后你必须有某种方式来表示操作序列和某种算术评估方式。
-
这个问题最好在math.stackexchange.com 上回答,因为这个问题与编程无关。
-
可能有一些巧妙的数学技巧可以避免在这里进行详尽的搜索,但我不知道。
-
与除法和零余数有关..只是一个想法我得到这可能不是一个解决方案..
-
@zwol 我不太确定。没有八个位置,因为他在那里有多个数字。实际上,这就是困难所在 - 我做了一个假设所有单个数字的答案,它是 11 行代码,但是使包括每个长度在内的数字的所有可能排列有点棘手。