প্রদত্ত কাজটি হল সাইজ 3-এর সর্বাধিক সংখ্যক গোষ্ঠী গণনা করা যা গঠন করা যেতে পারে যখন A টাইপের আইটেমগুলির N সংখ্যা এবং B টাইপের আইটেমগুলির M সংখ্যা দেওয়া হয়৷ পি>
এছাড়াও, প্রতিটি গ্রুপে প্রতিটি প্রকারের অন্তত একটি আইটেম থাকা উচিত, যেটি হয় A বা B।
আসুন এখন বুঝতে পারি একটি উদাহরণ ব্যবহার করে আমাদের কী করতে হবে −
ইনপুট − N=3, M=5
ইনপুট৷ − 2
ব্যাখ্যা
Group 1: 1 item of type A and 2 items of type B Group 2: 1 item of type A and 2 items of type B In total, 2 items of type A and 4 items of type B are used.
ইনপুট − N=5, M=9
ইনপুট − 4
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
নিম্নলিখিত পরিস্থিতিকে 4টি ক্ষেত্রে ভাগ করা যায় -
-
কেস 1 −
যখন M>=2N, তখন সম্ভাব্য সর্বাধিক সংখ্যক গোষ্ঠী =M
-
কেস 2 −
যখন N>=2M, তখন সম্ভাব্য সর্বাধিক সংখ্যক গোষ্ঠী =N
-
কেস 3 −
যখন (M+N) % 3 ==0, তখন সম্ভাব্য সর্বাধিক সংখ্যক গোষ্ঠী =(M+N)/3
-
কেস 4 −
যখন উপরোক্ত শর্তগুলির কোনটিই সত্য না হয় তখন মামলার সর্বোচ্চ সংখ্যা হয়ে যায় (M+N)/3 + (যেকোন অবশিষ্ট গ্রুপ)।
কোন গ্রুপ অবশিষ্ট আছে কিনা তা পরীক্ষা করতে, উভয় প্রকারের অবশিষ্ট আইটেমগুলি পেতে N=N%3 এবং M=M%3 সেট করুন এবং তারপর নিম্নলিখিত শর্তগুলি ব্যবহার করে পরীক্ষা করুন -
যদি ( N!=0 &&M!=0 &&(N+M)>=3)
যদি উপরের শর্তটি সত্য হয়, তাহলে চূড়ান্ত ফলাফলে 1 যোগ করুন।
-
-
ফাংশনে MaxGrp(), উপরের ক্ষেত্রে যদি কন্ডিশন চেক করে
ব্যবহার করে -
যদি (M>=2*N) সত্য হয় তবে উত্তর হিসাবে M দিন। অন্যথায় যদি ( N>=2*M ) সত্য হয় তবে উত্তর হিসাবে N দিন।
-
যদি উপরের উভয় শর্তই সত্য না হয়, তাহলে পরীক্ষা করুন যদি( (M + N)%3 ==0 )। যদি এটি সত্য হয় তবে উত্তর হিসাবে (M + N)/3 দিন।
-
যদি উপরের শর্তগুলির কোনটিই সত্য না হয় তবে একটি পরিবর্তনশীল গণনা শুরু করুন =(M + N)/3 প্রকার int-এর৷
N=N%3 এবং M=M%3 রাখুন এবং কেস 4-এ উপরে বর্ণিত শর্তটি ব্যবহার করে যেকোন অবশিষ্ট গোষ্ঠী পরীক্ষা করুন। যদি শর্তটি সত্য হয় তবে গণনা করতে 1 যোগ করুন এবং উত্তর দিন।
উদাহরণ
#include<bits/stdc++.h> using namespace std; // Implements above mentioned steps. int MaxGrp(int N, int M){ if (N >= 2 * M) return N; if (M >= 2 * N) return M; if ((M + N) % 3 == 0) return (M + N)/3; int count = (M + N)/3; M %= 3; N %= 3; if (M && N && (M + N) >= 3) count++; return count; } int main(){ int N = 5, M = 9; cout << MaxGrp(N, M); return 0; }
আউটপুট
আমরা উপরের কোডটি চালালে আমরা নিম্নলিখিত আউটপুট পাব −
4