帮助重新排列/求解方程式

时间:2010-02-18 23:00:58

标签: c++ c algebra

我有以下C公式

bucket = (hash - _min) * ((_capacity-1) / range());

我需要重新排列等式以返回_capacity而不是bucket(除了_capacity,我还有其他所有变量)。 e.g。

96 = (926234929-805306368) * (( x -1) /1249540730)
836 = (1852139639-805306368) * ((x -1) /1249540730)

你可以看到它是一个相当简单的等式,我需要的只是左边的x。但是我的代数非常生疏,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:8)

capacity = (range() * bucket) / (hash - _min) + 1;

bucket = (hash - _min) * ((_capacity - 1) / range()); // start
bucket = ((hash - _min) * (_capacity - 1)) / range(); // rearrange
range() * bucket = (hash - _min) * (_capacity - 1); // multiply by range
(range() * bucket) / (hash - _min) = _capacity - 1; // divide by (hash - _min)
(range() * bucket) / (hash - _min) + 1 = _capacity; // add 1
capacity = (range() * bucket) / (hash - _min) + 1; // rearrange

答案 1 :(得分:2)

_capacity = 1 + bucket / (hash - _min) * range();

规定hash不能再等于_min