আমাদের a, b, c, n পূর্ণসংখ্যা দেওয়া হয়েছে। লক্ষ্য হল x, y এবং z এর সমষ্টিকে সর্বাধিক করা যেমন thatax+by+cz=n।
উপরের সূত্র থেকে,
cz=n-(ax+by) z= (n- (ax+by))/c
x এবং y ঠিক করে, প্রতিটি x, y এবং z এর জন্য উপরের সূত্রটি ব্যবহার করে z গণনা করুন। যোগফল গণনা করুন এবং সর্বাধিক প্রাপ্ত সমষ্টি সংরক্ষণ করুন।
ইনপুট
n = 6, a = 3, b = 4, c = 5;
আউটপুট
maximum x+y+z is 2.
ব্যাখ্যা − x=2, y=0 এবং z=0 ax+by+cz=n এর জন্য।
3*2+0*4+0*5=6 =n
ইনপুট
n = 4, a = 3, b = 1, c = 2;
আউটপুট
maximum x+y+z=4
ব্যাখ্যা − x=0, y=4 এবং z=4 ax+by+cz=n এর জন্য।
0*3+4*1+0*2=4 =n
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
পূর্ণসংখ্যা a,b,c, এবং n ax+by+cz=n প্রকাশের জন্য ব্যবহৃত হয়।
-
ফাংশন maximize(,int n,int a,int b,int c) ইনপুট হিসাবে a, b, c এবং n নেয় এবং x, y এবং z এর সর্বাধিক সম্ভাব্য যোগফল প্রদান করে যেমন ax+by+cz=n.
-
(i=0;i<=n;i+=a), এছাড়াও
এর জন্য সমস্ত সম্ভাব্য কুড়াল মান গ্রহণ করা -
(j=0;j<=n;j+=b),
এর জন্য মান দ্বারা সম্ভাব্য সব গ্রহণ করা -
z=(n- (ax+by))/c.
গণনা করুন -
এখন x=i/a এবং y=j/b। x+y+z গণনা করুন এবং তাপমাত্রায় সংরক্ষণ করুন।
-
যদি temp> =maxx এখন পর্যন্ত, maxx আপডেট করুন।
-
পছন্দসই যোগফল হিসাবে maxx ফেরত দিন।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int maximize(int n, int a, int b, int c){ int maxx = 0; // i for possible values of ax for (int i = 0; i <= n; i += a) // j for possible values of by for (int j = 0; j <= n - i; j += b) { float z = (n - (i + j)) / c; // If z is an integer if (floor(z) == ceil(z)) { int x = i / a; int y = j / b; int temp=x+y+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