2016-11-18 5 views
0

я нужна функция х которая принимает два целочисленных параметра - дивиденд и делитель B - и возвращает массив целочисленных дроби С1, С2, ... , 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])

Я не хочу изобретать велосипед, есть ли такая функция где-нибудь?

ответ

2

Предполагая функцию, чтобы быть f(x,y) и каждые переменное, чтобы быть положительными оцененными целыми числами, алгоритм выборки:

  1. Разделить й на у, и хранить остальное как г, фактор, как д ,

  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 - 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 

Это будет работать, если X и Y оба неотрицательны и Y > 0. Если Y больше X, он все равно справится с этим.