保和除法

Division that preserve the sum

我需要一个函数 f,它有两个整数参数——一个被除数 A​​ 和一个除数 B -- 和 returns 整数商数组 C1, C2, ..., Cn 例如 C1 + C2 + ... + Cn = AA​​B 的提示是 "equally distributed".

例如:

我不想重新发明轮子,请问哪里有这样的功能?

假设函数为f(x,y),并且每个变量都是正值整数,示例算法为:

  1. x除以y,余数存为r,商存为q。

  2. for( i=1; i<=r; i++ )

    element[i] = q + 1; // assuming the array index starts from 1.

就是这样。您已将元素存储在 element[] 数组中。

高度怀疑是否存在。然而,一个可以很容易地实现。您可以使用 B 获取所述数组中的元素数量,并在 A % B

上方获取 1 的数量

这是一个贪心算法。对于任何除数 Y,余数最多为 Y - 1。所以将余数 1 贪婪地分配给每个商。不可能每人分配1后还有余数,或者一个商会得到多于1。

f(X, Y):
    q = X / Y
    r = X % Y
    while r not equal to 0
        print q + 1
        r := r - 1
        Y := Y - 1
    end

    while Y not equal 0
        print q
        Y := Y - 1
    end
end

如果 XY 都是非负数且 Y > 0,这将起作用。如果 Y 大于 X,它仍然会处理这个。