Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 모든 사람 X의 총 이익 극대화

<시간/>

5개의 정수 변수 Num, P1, P2, 이익_P1, 이익_P2가 주어지고 작업은 [1,Num] 범위의 모든 자연수와 이익을 최대화하는 것입니다. 여기서의 접근 방식은 양수가 P1으로 나눌 수 있는 경우 이익이 이익_P1만큼 증가하고 유사하게 범위의 숫자가 P2로 나눌 수 있는 경우 이익_P2의 이익 마진이 증가한다는 것입니다. 또한 양의 정수에서 얻은 이익은 최대 한 번만 추가할 수 있습니다.

예를 들어 이해합시다:-

입력 - 정수 수 =4, P1 =6, P2 =2, 이익_P1 =8, 이익_P2 =2;

출력 − 모든 사람의 총 이익 극대화 X 4

설명 −여기서 1에서 4([1,Num(4)])

사이의 숫자가 있습니다.

시리즈의 어떤 숫자도 P1로 나누어 떨어지지 않습니다.

1과 2는 P2로 나눌 수 있습니다.

1과 2는 P2로 나누어져 2*2=4의 이익을 얻습니다.

입력 - 숫자 =3, P1 =1, P2 =2, 이익_P1 =3, 이익_P2 =4

출력 − 모든 사람의 총 이익 극대화 X 10

설명 − 1, 2, 3은 A로 나눌 수 있습니다.

2는 주어진 범위에서 B로 나눌 수 있는 유일한 숫자입니다.

2는 A와 B로 나눌 수 있습니다.

1과 3을 A로 나누어 2 * 3 =6의 이익을 얻을 수 있습니다.

2를 B로 나누어 1 * 4 =4의 이익을 얻을 수 있습니다.

2는 둘 다 나눌 수 있지만 이익을 극대화하기 위해 A 대신 B로 나눕니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다 -

  • 우리는 양수 범위(Num)를 포함하는 6개의 정수 변수가 주어졌습니다. P1은 첫 번째 사람을, P2는 두 번째 사람을 나타내고, 이익_P1은 사람 1의 이익과 유사합니다(즉, 주어진 숫자 범위의 숫자가 다음과 같은 경우) P1으로 나눌 수 있는 이익_P1이 증가함), 유사하게 이익_P2입니다.

  • 메인 함수 내에서 모든 계산을 위한 유틸리티 메소드인(profitMaximisation) 메소드가 호출됩니다.

  • 함수 내에서 P1과 P2 모두로 나누어지는 모든 숫자는 그 숫자가 P1 또는 P2의 LCM의 배수인 경우에만 볼 수 있습니다. 또한 더 많은 이익을 주는 숫자로 나누어야 합니다.

  • 따라서 여기에서 profit_P1 * (num / P1) + income_P2 * (num / P2) – min(profit_P1, 이익_P2) * (num / lcm(P1, P2))로 계산됩니다. .

  • 주어진 숫자의 lcm를 계산하기 위해 CalculateGcd() 메소드가 도입되었습니다.

  • 최종 출력은 메인 메소드에서 캡처되어 사용자에게 출력으로 표시됩니다.

예시

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