Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เพิ่มผลกำไรทั้งหมดให้กับบุคคล X ทั้งหมดใน Java


เราได้รับตัวแปรจำนวนเต็ม 5 ตัว Num, P1, P2, profit_P1, profit_P2 และภารกิจคือการเพิ่มผลกำไรสูงสุดและจากตัวเลขธรรมชาติทั้งหมดในช่วง [1,Num] แนวทางที่นี่คือหากจำนวนบวกหารด้วย P1 ลงตัว กำไรจะเพิ่มขึ้นด้วย profit_P1 และในทำนองเดียวกันหากตัวเลขในช่วงหารด้วย P2 ลงตัว กำไรขั้นต้นของ profit_P2 จะเพิ่มขึ้น นอกจากนี้ กำไรจากจำนวนเต็มบวกสามารถเพิ่มได้ไม่เกินครั้งเดียว

ให้เราเข้าใจด้วยตัวอย่าง:-

ป้อนข้อมูล − int num =4, P1 =6, P2 =2, profit_P1 =8, profit_P2 =2;

ผลผลิต − เพิ่มผลกำไรทั้งหมดของบุคคลทั้งหมด X 4

คำอธิบาย −ที่นี่เรามีตัวเลขตั้งแต่ 1 ถึง 4([1,Num(4)])

ไม่มีตัวเลขในชุดใดหารด้วย P1

1 และ 2 หารด้วย P2 ลงตัว

1 และ 2 หารด้วย P2 ลงตัวเพื่อให้ได้กำไร 2*2=4

ป้อนข้อมูล − num =3, P1 =1, P2 =2, profit_P1 =3, profit_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 หารด้วยทั้งสองลงตัว แต่เพื่อเพิ่มผลกำไรสูงสุด ให้หารด้วย B แทน A

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้ −

  • เราได้รับตัวแปรจำนวนเต็ม 6 ตัวที่รวมช่วงจำนวนบวก (Num), P1 ซึ่งแสดงถึงบุคคลที่หนึ่ง, P2 หมายถึงบุคคลที่สอง,profit_P1 ซึ่งคล้ายกับกำไรของบุคคล 1 (เช่นถ้าตัวเลขในช่วงตัวเลขที่กำหนดคือ หารด้วยกำไร P1 เพิ่มขึ้น P1) และกำไรในทำนองเดียวกัน_P2

  • ภายในฟังก์ชันหลักจะเรียกเมธอด (profitMaximisation) ซึ่งเป็นวิธีอรรถประโยชน์สำหรับการคำนวณทั้งหมด

  • ภายในฟังก์ชันจะเห็นได้ว่าทุกตัวเลขที่หารด้วยทั้ง P1 และ P2 ลงตัวก็ต่อเมื่อตัวเลขนั้นเป็นผลคูณของ LCM ของ P1 หรือ P2 นอกจากนี้ควรหารด้วยตัวเลขที่ให้ผลกำไรมากกว่า

  • ดังนั้นในที่นี้จึงคำนวณโดย profit_P1 * (num / P1) + profit_P2 * (num / P2) – min(profit_P1, profit_P2) * (num / lcm(P1, P2)) .

  • มีการแนะนำวิธีการ CalculateGcd() เพื่อคำนวณ lcm ของตัวเลขที่กำหนด

  • เอาต์พุตสุดท้ายถูกจับในวิธีการหลักและแสดงให้ผู้ใช้เห็นเป็นเอาต์พุต

ตัวอย่าง

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