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

C++-এ x+y+z সর্বোচ্চ করা s.t. ax+by+cz=n

আমাদের 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
  1. C++-এ অ্যারে-এর বিটওয়াইজ OR সর্বাধিক করা

  2. অ্যারেতে a+b+c=d হওয়া সর্বোচ্চ d বের করা (C++)

  3. C++-এ n! % (k^x) = 0 হওয়া যেন x এর সর্বোচ্চ মান নির্ণয়

  4. C++-এ অ্যারে ব্যালেন্সড (Balanced) করার জন্য যোগ করতে হবে সর্বনিম্ন মান খুঁজে বের করা