如何根据给定因素和较低边界划分总数?

时间:2012-05-10 14:58:56

标签: c# algorithm math distribution boundary

我想问:

  • 我有正整数,让我们说: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#)

3 个答案:

答案 0 :(得分: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

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

为3(你想要的数字) - 2.5(你拥有的数字)是0.5

所以TOTAL必须增加0.5。

5次x must = 3我们可以看到x必须= 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才能抵消0.5倍x

的增加

so z now = 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!我们钉了它! yaaay

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

似乎你必须首先解决一个任务,然后再编码。 让我们看看你给出的条件 所有你的数字都被大写到X必须大于3,这就是为什么它们的最大数量应该是6,因为7 * 3已经是21,大于20。 其次,根据您的号码计数,我们必须计算数字的最小值。如果它是6,我们有20至6 = 3的最小值剩余值,如果它是5那么我们有20%5 = 4。 只有在这两个条件下我们才能计算出“X”。