2015-04-04 89 views
0

当实践编码问题,我就遇到了这个挑战性的问题:挑战算法模块化倍数

说我有7变量方程,(A + B + C + C + d + B)(E + F + B + C)(G + F + F),以及一个高达3500个号码的巨大列表:

A 1,2,3; B 1,2; C 9,1; D 1; E 2; F 1; G 1

该列表基本上给出了每个变量可能具有的所有可能的值。问题是,我可以选择多少种方法来选择变量的值,以使结果数为7的倍数?

例如,我可以从上面的列表中选择 A = 1,B = 1,C = 1,D = 1,E = 2,F = 1,G = 1。这会使数字(1 + 2 + 1 + 1 + 1 + 1)(2 + 1 + 1 + 1)(1 + 1 + 1)= 35,这确实是7的倍数。

我的解决方案是测试七个变量的每种可能的组合,并检查这个总和是否是七的倍数。但是,这个解决方案显然非常缓慢。有没有人有这个问题更有效的解决方案?

+0

任何人?到目前为止唯一的答案是太慢。 – 2015-04-05 16:41:36

回答

0

而如果第一数目的7比不管多你倍它通过它良好保持的7

这样的多(E + F + B + C)(G + F + F)是完全不相关的。如果(E + F + B + C)是7的倍数,那么总数也是与(G + F + F)相同的7的倍数。

如果它们都不是7的倍数,我认为答案可能是7的倍数。至少,我想不出可能发生这种情况。 除非说7或14 10s,否则任何数量的10将永远不会被7看到

+0

谢谢! 但是,我如何计算答案的总数?你能用伪代码或其他什么来解释一下吗?非常感谢 – 2015-04-04 23:18:30

+0

我如何以有效的方式实现这一点?我能想到的唯一方法就是再循环一遍,这与我的解决方案基本相同。这太慢了。感谢您的帮助! – 2015-04-05 00:36:15