2016-11-18 62 views
0

需要一個函數˚F採用兩個整數參數 - 股息和除數 - 並返回整數的數組商數C1,C2,... ,CnC1 + C2 + ... + Cn = A和提醒AB是「均等分佈」。司,同時保留總和

例如:

  • F(9,3)= [3,3,3]
  • F(10,3)= [4,3,3]
  • F(11 ,3)= [4,4,3](不只是[5,3,3])

我不想重新發明輪子,有沒有這樣的功能?

回答

2

假定該函數爲f(x,y),和每個變量爲正值的整數,樣品的算法是:由y

  1. 鴻溝x和商店其餘爲r,商爲q 。

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

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

就是這樣。你的元素存儲在element[]數組中。

-1

高度懷疑有一個。但是可以很容易地實現。您可以使用B和1以上的數字獲得數組中元素的數量A % B

0

這是一個貪婪算法。對於任何除數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,它仍然會處理此問題。