We have 5 integer variables Num, P1, P2, profit_P1, profit_P2, and the task is to maximize the profit and choose from all natural numbers in the range [1, Num]. The approach here is that if a positive number is divisible by P1, the profit is increased by profit_P1, similarly, if a number in the range is divisible by P2, the profit is increased by profit_P2. Furthermore, profits from positive integers can only be added at most once.
Input - int num = 4, P1 = 6, P2 = 2, profit_P1 = 8, profit_P2 = 2;
Output - Maximize the total profit for all )])
No number in the series is divisible by P1 1 and 2 are divisible by P2
1 and 2 are divisible by P2, resulting in a profit of 2 * 2 =
4Enter - num = 3, P1 = 1, P2 = 2, profit_P1 = 3, profit_P2 = 4
Output - Maximize the total profit for everyone X 10
Explanation - 1, 2 and 3 are all divisible by A.
2 is the only number in the given range that is divisible by B. 2 is divisible by A and B.
1 and 3 can be divisible by A, and the profit is 2 * 3 = 6
2 can be divisible by B, and the profit 1 * 4 = 4
2 can be divided by A is divisible by B, but to maximize profit, it is divisible by B instead of A.
The method used in the following program is as follows -
A method (profitMaximisation) is called in the main function, which is a utility method for all calculations.
As you can see inside the function, only when the number is a multiple of the least common multiple of P1 or P2, it can be divisible by both P1 and P2 at the same time. Furthermore, it should be divided by a number that provides more profit.
So, the calculation method here is
profit_P1 * (num / P1) profit_P2 * (num / P2) - min(profit_P1, profit_P2) * (num / lcm(P1 , P2))Introduced a method CalculateGcd() to calculate the least common multiple of a given number.
The final output is captured in the main method and displayed to the user.
Example
public class testClass{ static int CalculateGcd(int n1, int n2){ if (n2 == 0) return n1; return CalculateGcd(n2, n1 % n2); } static int profitMaximisation(int n, int a, int b, int x, int y){ int result = x * (n / a); result += y * (n / b); result -= Math.min(x, y) * (n / ((a * b) / CalculateGcd(a, b))); return result; } public static void main(String[] args){ int num = 6, P1 = 6, P2 = 2, profit_P1 = 8, profit_P2 = 2; System.out.println("Maximize the total profit of all the persons X "+profitMaximisation(num, P1, P2, profit_P1, profit_P2)); } }
Maximize the total profit of all the persons X 12
The above is the detailed content of In Java, maximize the total profit of all people X. For more information, please follow other related articles on the PHP Chinese website!