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

সি++-এ বিভাজ্যতা-ভিত্তিক লাভ সর্বোচ্চ করা

পাঁচটি ইন্টিজার N, A, B, X, Y দেওয়া আছে। লক্ষ্য হল ১ থেকে N পর্যন্ত সংখ্যাগুলোতে বিভাজ্যতা যাচাই করে সর্বোচ্চ লাভ (profit) অর্জন করা:

  • যদি কোনো সংখ্যা A দ্বারা বিভাজ্য হয়, লাভ X বাড়বে।
  • যদি কোনো সংখ্যা B দ্বারা বিভাজ্য হয়, লাভ Y বাড়বে।
  • একটি নির্দিষ্ট সংখ্যার জন্য লাভ একবারই যোগ হবে।

উদাহরণ

ইনপুট: N=4, A=2, B=3, X=2, Y=3

আউটপুট: সর্বোচ্চ লাভ: ৭

ব্যাখ্যা: ২, ৪ A (২) দ্বারা বিভাজ্য। লাভ ০→২→৪ (X=2)। ৩ B (৩) দ্বারা বিভাজ্য। লাভ ৪→৭ (Y=3)।

ইনপুট: N=5, A=2, B=4, X=1, Y=3

আউটপুট: সর্বোচ্চ লাভ: ৪

ব্যাখ্যা: ২, ৪ A-দ্বারা বিভাজ্য। ৪ B-দ্বারাও বিভাজ্য। ২-এর জন্য লাভ ১ (X)। ৪-এর জন্য B-নির্বাচন (Y=3 বড়)। লাভ ১→৪।

অ্যাপ্রোচ

  • N, A, B, X, Y ইন্টিজার।
  • maximizeProfit(int n, int a, int b, int x, int y) ফাংশন সব প্যারামিটার গ্রহণ করে সর্বোচ্চ লাভ রিটার্ন করে।
  • profit=0।
  • for i=1 থেকে n: i%a==0 && i%b==0 হলে max(x,y) যোগ। i%a==0 হলে x যোগ। i%b==0 হলে y যোগ।

উদাহরণ কোড

#include <bits/stdc++.h>
using namespace std;

int maximizeProfit(int n, int a, int b, int x, int y) {
    int profit = 0;
    for (int i = 1; i <= n; i++) {
        if (i % a == 0 && i % b == 0) {
            int maxx = x >= y ? x : y;
            profit += maxx;
        } else if (i % a == 0) {
            profit += x;
        } else if (i % b == 0) {
            profit += y;
        }
    }
    return profit;
}

int main() {
    int N = 6, A = 2, B = 4, X = 6, Y = 3;
    cout << "Maximized profit is: " << maximizeProfit(N, A, B, X, Y);
    return 0;
}

আউটপুট

Maximized profit is: 2
  1. C++-এ দুটি সংখ্যার অল্টারনেট বিট দিয়ে নতুন সংখ্যা তৈরি করা

  2. অ্যারে (বিগুণ সংখ্যা) এর GCD বের করা (C++)

  3. C++-এ দুইটির অধিক সংখ্যার GCD (GCD of Array/Multiple Numbers)

  4. C++ প্রোগ্রাম: দুটি সংখ্যা সোয়াপ (Swap) করা