আমাদের a,b,c,n ইন্টিজার দেওয়া আছে। লক্ষ্য x+y+z সর্বোচ্চ করা যাতে ax+by+cz=n সন্তুষ্ট হয়।
সূত্র: z = (n - (ax+by)) / c। x এবং y ফিক্স করে z ক্যালকুলেট করলে x+y+z বের করা যায়। সব পসিবল x,y ট্রাই করে ম্যাক্সিমাম সাম বের করা।
ইনপুট
n = 6, a = 3, b = 4, c = 5
আউটপুট
maximum x+y+z is 2.
ব্যাখ্যা: x=2, y=0, z=0 -> 3*2+0+0=6=n।
ইনপুট
n = 4, a = 3, b = 1, c = 2
আউটপুট
maximum x+y+z=4
ব্যাখ্যা: x=0, y=4, z=0 -> 0+4*1+0=4=n।
প্রোগ্রামে ব্যবহৃত পদ্ধতি
- a,b,c,n ইন্টিজার।
- maximize(int n,int a,int b,int c) ফাংশন।
- i=0 থেকে n পর্যন্ত stape a (ax মান), j=0 থেকে n-i পর্যন্ত stape b (by মান)।
- z = (n - (i+j)) / c। z ইন্টিজার কিনা চেক (floor==ceil)।
- x=i/a, y=j/b। temp = x+y+z। maxx আপডেট।
- maxx রিটার্ন।
উদাহরণ কোড
#include <bits/stdc++.h>
using namespace std;
int maximize(int n, int a, int b, int c){
int maxx = 0;
for (int i = 0; i <= n; i += a)
for (int j = 0; j <= n - i; j += b) {
float z = (n - (i + j)) / c;
if (floor(z) == ceil(z)) {
int x = i / a;
int y = j / b;
int temp = x + y + (int)z;
if(temp >= maxx) maxx = temp;
}
}
return maxx;
}
int main(){
int n = 6, a = 3, b = 4, c = 5;
cout << "Maximized the value of x + y + z :" << maximize(n, a, b, c);
return 0;
}
আউটপুট
Maximized the value of x + y + z :2