পাঁচটি ইন্টিজার 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