কম্পিউটার টিউটোরিয়াল

জাভাতে সব ব্যক্তির মোট লাভ সর্বোচ্চ করা

আমাদের ৫টি পূর্ণসংখ্যা ভেরিয়েবল দেওয়া আছে: 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;

আউটপুট: সব ব্যক্তির মোট লাভ সর্বোচ্চ করা 4

ব্যাখ্যা: ১ থেকে ৪ পর্যন্ত সংখ্যা রেঞ্জে:

  • কোনো সংখ্যাও P1 (৬) দিয়ে বিভাজ্য নয়
  • ১ এবং ২ P2 (২) দিয়ে বিভাজ্য
  • ১ এবং ২ P2 দিয়ে বিভাজ্য হওয়ায় লাভ ২×২ = ৪

উদাহরণ ২

ইনপুট: num = 3, P1 = 1, P2 = 2, profit_P1 = 3, profit_P2 = 4

আউটপুট: সব ব্যক্তির মোট লাভ সর্বোচ্চ করা 10

ব্যাখ্যা:

  • ১, ২ এবং ৩ A (P1=1) দিয়ে বিভাজ্য
  • ২ একমাত্র সংখ্যা যা B (P2=2) দিয়ে বিভাজ্য
  • ২ A এবং B উভয় দিয়ে বিভাজ্য
  • ১ এবং ৩ A দিয়ে বিভাজ্য → লাভ ২×৩ = ৬
  • ২ B দিয়ে বিভাজ্য → লাভ ১×৪ = ৪
  • ২ উভয় দিয়ে বিভাজ্য হলেও লাভ সর্বোচ্চ করার জন্য এটি B দিয়ে বিভাজ্য মाना হয়েছে A-র বদলে

প্রোগ্রামে ব্যবহৃত পদ্ধতি

  • ৬টি পূর্ণসংখ্যা ভেরিয়েবল দেওয়া আছে: ধনাত্মক সংখ্যা রেঞ্জ (Num), P1 (প্রথম ব্যক্তি), P2 (দ্বিতীয় ব্যক্তি), profit_P1 (ব্যক্তি ১-এর লাভ), profit_P2 (ব্যক্তি ২-এর লাভ)।
  • main ফাংশনে profitMaximisation() ইউটিলিটি মেথড কল করা হয় যা সকল গাণনার জন্য দায়িত্বী।
  • ফাংশনের ভিতরে দেখা যায় যে, যেকোনো সংখ্যা যদি P1 এবং P2 উভয় দিয়ে বিভাজ্য হয়, তবে সেটি অবশ্যই P1 বা P2-এর LCM-এর গুণিতক হবে। এটিকে তার লাভ বেশি দেওয়া সংখ্যা দিয়ে ভাগ করা উচিত।
  • সূত্র: profit_P1 * (num / P1) + profit_P2 * (num / P2) – min(profit_P1, profit_P2) * (num / lcm(P1, P2))
  • CalculateGcd() মেথড দিয়ে LCM নির্ণয় করা হয়।
  • চূড়ান্ত আউটপুট main মেথডে নিয়ে ইউজারকে দেখানো হয়।

উদাহরণ কোড

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
  1. জাভাতে ডিরেক্টরির সব ফাইল রিকার্সিভলি ডিলিট করা (শুধু ফাইল)

  2. জাভাতে JFrame-এর ম্যাক্সিমাইজ বাটন কীভাবে ডিজেবল করবেন?

  3. জাভা স্বিং-এর আর্কিটেকচার ব্যাখ্যা করুন।

  4. জাভাতে Object ক্লাস কেন সব ক্লাসের সুপার ক্লাস?