Nous avons 5 variables entières Num, P1, P2, profit_P1, profit_P2, et la tâche est de maximiser le profit et de choisir parmi tous les nombres naturels de la plage [1, Num]. L'approche ici est que si un nombre positif est divisible par P1, le profit est augmenté de profit_P1, de même, si un nombre de la plage est divisible par P2, le profit est augmenté de profit_P2. De plus, les bénéfices des entiers positifs ne peuvent être ajoutés qu’une seule fois.
Input - int num = 4, P1 = 6, P2 = 2, profit_P1 = 8, profit_P2 = 2
Output - Maximiser le profit total X pour les 4
;Explication - La plage de nombres ici est de 1 à 4 ([1, Num(4)])
Aucun nombre de la série n'est divisible par P1
1 et 2 sont divisibles par P2
1 et 2 Divisible par P2, nous obtenons un profit 2 * 2 = 4
Input - num = 3, P1 = 1, P2 = 2, profit_P1 = 3, profit_P2 = 4
Output - Maximiser le profit total de chacun
2 est le seul nombre de la plage donnée qui est divisible par B. 2 est divisible par A et B.
1 et 3 sont divisibles par A, ce qui donne un profit 2 * 3 = 6
2 peut être divisible par B, ce qui donne un profit 1 * 4 = 4
2 peut être divisible par A et B, mais pour maximiser le profit, il est-ce que B est divisible et non A.
La méthode utilisée dans le programme ci-dessous est la suivante -
Une méthode (profitMaximisation) est appelée dans la fonction principale, qui est une méthode utilitaire pour tous les calculs.
Vous pouvez voir à l'intérieur de la fonction que seulement si le nombre est un multiple du plus petit commun multiple de P1 ou P2, il peut être divisible par P1 et P2 en même temps. De plus, il doit être divisé par un nombre qui génère plus de profit.
Donc, la méthode de calcul ici est
profit_P1 * (num / P1) + profit_P2 * (num / P2) - min(profit_P1, profit_P2) * (num / lcm(P1, P2))Introduit une méthode CalculateGcd() pour calculer le plus petit commun multiple d'un nombre donné.
Le résultat final est capturé dans la méthode principale et affiché à l'utilisateur.
Exemple
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
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!