Here is a recursive solution, just for fun.
import java.util.Arrays;
public class PizzaDistributor {
public int[] distributePizzaToEatersEvenly(int numSlices, int[] eaters) {
if (eaters == null || eaters.length == 0) {
return null;
}
if (eaters.length > numSlices) {
for (int i = 0; i < numSlices; i++) {
eaters[i] += 1;
}
} else {
int slices = numSlices / eaters.length;
for (int i = 0; i < eaters.length; i++) {
eaters[i] = slices;
}
//If there is a remainder to distribute, distribute it evenly, recursively.
if ((numSlices % eaters.length) > 0) {
distributePizzaToEatersEvenly(numSlices % eaters.length, eaters);
}
}
return eaters;
}
public static void main(String[] args){
PizzaDistributor pizzaDistributor = new PizzaDistributor ();
System.out.println("0 slices, 1 eater:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(0,new int[1])));
System.out.println("0 slices, 2 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(0,new int[2])));
System.out.println("0 slices, 0 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(0,new int[0])));
System.out.println("10 slices, 0 eaters:"+Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[0])));
System.out.println("10 slices, 1 eater:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[1]))); //lucky guy!
System.out.println("10 slices, 3 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[3])));
System.out.println("10 slices, 5 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[5])));
System.out.println("10 slices, 7 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[7])));
System.out.println("10 slices, 10 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[10])));
System.out.println("10 slices, 13 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[13])));
System.out.println("10 slices, 20 eaters:" +Arrays.toString(pizzaDistributor.distributePizzaToEatersEvenly(10,new int[20])));
}
}
Produces this output:
0 slices, 1 eater:[0]
0 slices, 2 eaters:[0, 0]
0 slices, 0 eaters:null
10 slices, 0 eaters:null
10 slices, 1 eater:[10]
10 slices, 3 eaters:[4, 3, 3]
10 slices, 5 eaters:[2, 2, 2, 2, 2]
10 slices, 7 eaters:[2, 2, 2, 1, 1, 1, 1]
10 slices, 10 eaters:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
10 slices, 13 eaters:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0]
10 slices, 20 eaters:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Process finished with exit code 0