Here you can find the source of maxFloorDiv(int c, int... vals)
Parameter | Description |
---|---|
c | != 0 |
vals | different from 0 |
public static int maxFloorDiv(int c, int... vals)
//package com.java2s; /******************************************************************************* * OscaR is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 2.1 of the License, or * (at your option) any later version./*w ww .j av a2 s. co m*/ * * OscaR is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with OscaR. * If not, see http://www.gnu.org/licenses/lgpl-3.0.en.html ******************************************************************************/ public class Main { /** * @param c != 0 * @param vals different from 0 * @return max(floor(c/v)) with v in vals */ public static int maxFloorDiv(int c, int... vals) { assert (vals.length > 0); assert (vals[0] != 0); int res = Integer.MIN_VALUE; for (int i = 0; i < vals.length; i++) { assert (vals[i] != 0); int tmp = floorDiv(c, vals[i]); if (tmp > res) res = tmp; } return res; } /** * @param v1 * @param v2 != 0 * @return floor(v1/v2) */ public static int floorDiv(int v1, int v2) { return v1 / v2 - (((v1 % v2 != 0) && negativeProduct(v1, v2)) ? 1 : 0); } public static boolean negativeProduct(int v1, int v2) { return (v2 < 0 ^ v1 < 0) && (v1 != 0 && v2 != 0); } }