保留金额的部门

时间:2016-11-18 11:33:03

标签: algorithm division

我需要一个函数 f ,它接受两个整数参数 - 一个被除数 A 和一个除数 B - 并返回一个数组整数商 C1,C2,...,Cn ,例如 C1 + C2 + ... + Cn = A 以及 A 的提醒和 B 是"平均分配"。

例如:

  • f(9,3)= [3,3,3]
  • f(10,3)= [4,3,3]
  • f(11,3)= [4,4,3](而不仅仅是[5,3,3])

我不想重新发明轮子,某处有这样的功能吗?

3 个答案:

答案 0 :(得分:2)

假设函数为string = 'this_is_my_string' sp = string.split('_') index = 12 total_len = 0 for word in sp: total_len += (len(word) + 1) #The '+1' accounts for the underscore if index < total_len: result = word break print result 每个变量为正值整数 ,则示例算法为:

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

  2. f(x,y)

    for( i=1; i<=r; i++ )  element[i] = q + 1;

  3. 就是这样。您的元素存储在// assuming the array index starts from 1.数组中。

答案 1 :(得分:0)

这是一种贪婪的算法。对于任何除数Y - 1,余数最多为Y。因此,以贪婪的方式将余数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,它仍会处理此问题。

答案 2 :(得分:-1)

非常怀疑有一个。然而,可以非常容易地实现。您可以使用B获取所述数组中的元素数量,使用A % B以上的数字获取数字