将数字拆分为2个部分:在给定数字N的上方和下方

时间:2014-08-18 20:56:05

标签: java python math

我正在尝试模拟电费。通常,对于<1000千瓦时的使用,存在一定的每千瓦时成本,如果每月使用> 1000kWh则会增加。我需要一个方程式,给出particular model for electricity consumption每千瓦时的成本。

给定数字x和常数N,找到a和b,其中:

  • a =数字部分低于N
  • b =高于N
  • 的数字部分

&#34;如果&#34;条件不能使用;需要一个单一的公式。

例如:

  • 对于N=1000x=500,我们有a=500, b=0
  • 对于N=1000x=1500,我们有a=1000, b=500

编辑:

更清楚地说明:

  • for x&lt; N,a = x mod N,b = 0;
  • for x&gt; N,a = N,b = x mod N。

EDIT2:

abs()运算符是可以接受的,因为它可以使用位运算符实现。 abs(x)=((x >>> 30) | 1)) * x

如何将这两种情况合并为一个方程?

2 个答案:

答案 0 :(得分:1)

在Python中

(a,b) = (min(x,N), max(x-N,0))

答案 1 :(得分:1)

我认为在你提供最大版本定义的支持后我得到了一个---

max(a,b) = 1/2 (a+b+abs(a-b))

和myside的最低限度

min(a,b) = 1/2 (a+b-abs(a-b))

批评时,请通过批评来改善我: -

b={x-N+abs(x-N)}/2;
a={x+N-abs(x-N)}/2;     Or    simply, x-b;