0

我想问:

  • 我有任何正整数,比如说:10
  • 然后我得到随机整数(它们也是随机数),比方说:5, 7, 8
  • 我想计算浮点数,例如:5*x + 7*x + 8*x = 10
  • 这一刻我明白了,但我想有一个共同的下限(比方说3),例如:

5 * x > 3
7 * x > 3
8 * x > 3

  • 可以更正数字(比率)以达到此状态,因此在此特定示例中,它将如下所示:
sum = 5 + 7 + 8 = 20
x = 10 (total) / 20 (sum)
x = 0.5

results: 5*0.5 + 7*0.5 + 8*0.5 = 2.5 + 3.5 + 4 = 10 (total)

到目前为止一切都很好,但2.5现在低于给定的最小值。限制3,那么如何解决这个问题!

有可能吗,如果可以,怎么做?(最好在 C# 中)

4

3 回答 3

1

让我们以您的为例,看看我们将如何解决它。

我将使用 5x 7x 8x 更改为使用 5x 7y 8z,因为已经决定这些必须更改以适应要求,因此不会全部相同。

So currently you get a total answer of 10 by having 

5 times 0.5 = 2.5
7 times 0.5 = 3.5
8 times 0.5 = 4

但是,5 乘以 0.5 不大于 3

因此,要使 5 倍 x 至少 3,我们必须将总数增加 0.5

因为 3(您至少想要的数字)- 2.5(您拥有的数字)是 0.5

所以 TOTAL 必须增加 0.5。

作为 x must = 3 的 5 倍,我们可以看到 x must = 3 除以 5,得到 0.6

now lets recalculate your sum

5 times 0.6 = 3
7 tiems 0.5 = 3.5
8 times 0.5 = 4

加起来= 10.5 ...啊,球。

好的,所以我们可以看到 y 或 z 必须变小以确保答案仍然是 10

所以让我们选择 8 次 z = 4(因为 4 是 3 的进一步,并且会给我们最背风的方式)

0.5 除以 8 = 0.0625

所以 z 必须减少 0.0625 以抵消从 5 倍 x 增加的 0.5

所以 z 现在 = 0.5 - 0.0625 即 0.4375

lets redo your sum with these new numbers!

5 times 0.6 = 3
7 times 0.5 = 3.5
8 times  0.4375 = 3.5

3 加 3.5 加 3.5 = 10!我们成功了!耶

我希望这有帮助!如果不是很好,我还是很喜欢这样做:D

总而言之,我们必须增加 x 以使 5x 至少为 3,但 x 的增加意味着答案大于 10,因此 y 或 z 必须减少总增加量来抵消这一点,我们将增加量除以通过其他数字之一,计算出我们需要从 z 或 y 中减去多少才能使其再次成为完美的 10

于 2012-05-10T15:29:23.887 回答
0

你的要求是矛盾的。如果 x 是单值,则不可能保证 5*x + 7*x + 8*x = 10 同时 5*x > 3。如果你可以使用 5*x + 7*y + 8*z = 10,那么如果你有 3*value_count < 10 但这是我想的其他任务

于 2012-05-10T15:08:23.133 回答
0

看来你必须先解决一个任务,然后才能编码。让我们看看你给定的条件你所有乘以 X 的数字必须大于 3,这就是为什么它们的最大计数应该是 6,因为 7 * 3 已经是 21,大于 20。其次,取决于你的数字,我们必须计算数字的最小值。如果它是 6,我们有除法 20 到 6 = 3 的最小值,如果它是 5,那么我们有 20 % 5 = 4。只有在这两个条件下,我们才能计算“X”。

于 2012-05-10T15:10:58.187 回答