ধারণা
প্রদত্ত তিনটি ভিন্ন ধরণের কাপ (p[]) এবং সসার (q[]), এবং তাকগুলির m সংখ্যার ভিত্তিতে, কাপ এবং তাকগুলির পরিচ্ছন্ন বিন্যাস করা যায় কিনা তা নির্ধারণ করুন।
এখন, কাপ এবং সসারগুলির বিন্যাসগুলি পরিষ্কার হবে যদি এটি নিম্নলিখিত নিয়মগুলি অনুসরণ করে -
- প্রথম নিয়ম অনুসারে, কোন শেলফে কাপ এবং সসার উভয়ই থাকতে পারে না।
- দ্বিতীয় নিয়ম অনুযায়ী, কোনো শেলফে ৫ কাপের বেশি রাখা যাবে না।
- তৃতীয় নিয়ম অনুসারে, কোনো শেলফে ১০টির বেশি সসার থাকতে পারে না।
ইনপুট
p[] = {4, 3, 7} q[] = {5, 9, 10} m = 11
আউটপুট
Yes
ব্যাখ্যা
মোট কাপ =14, তাক প্রয়োজন =3
মোট সসার =24, তাক প্রয়োজন =3
সুতরাং, মোট প্রয়োজনীয় তাক =3 + 3 =6,
যা প্রদত্ত সংখ্যার চেয়ে ছোট তাক m. সুতরাং, আউটপুট হল হ্যাঁ।
ইনপুট
p[] = {5, 8, 5} q[] = {4, 10, 11} m = 3
আউটপুট
No
মোট কাপ =18, তাক প্রয়োজন =4
মোট সসার =25, তাক প্রয়োজন =3
সুতরাং, মোট প্রয়োজনীয় তাক =4 + 3 =7,
যা প্রদত্ত সংখ্যার চেয়ে বড় তাক m. সুতরাং, আউটপুট নং।
পদ্ধতি
কাপ এবং সসারগুলি সাজানোর জন্য, কাপের মোট সংখ্যা p এবং সসারের মোট সংখ্যা q নির্ধারণ করুন। কারণ, একই শেল্ফে 5 কাপের বেশি হওয়া সম্ভব নয়, তাই সূত্র (p+5-1)/5 দ্বারা কাপের জন্য প্রয়োজনীয় সর্বাধিক সংখ্যক তাক এবং সূত্রটি প্রয়োগ করে সসারের জন্য প্রয়োজনীয় সর্বোচ্চ সংখ্যক তাক নির্ধারণ করুন ( q+10-1)/10। দেখা গেছে যে যদি এই দুটি মানের সমষ্টি m এর সমান বা ছোট হয় তবে বিন্যাসটি সম্ভব নয় অন্যথায় নয়।
উদাহরণ
// C++ code to find if neat // arrangement of cups and // shelves can be made #include<bits/stdc++.h> using namespace std; // Shows function to check arrangement void canArrange1(int p[], int q[], int m){ int sump = 0, sumq = 0; // Used to calculate total number // of cups for(int i = 0; i < 3; i++) sump += p[i]; // Used to calculate total number // of saucers for(int i = 0; i < 3; i++) sumq += q[i]; // Now adding 5 and 10 so that if the // total sum is smaller than 5 and // 10 then we can get 1 as the // answer and not 0 int mp = (sump + 5 - 1) / 5; int mq = (sumq + 10 - 1) / 10; if(mp + mq <= m) cout << "Yes"; else cout << "No"; } // Driver code int main(){ // Shows number of cups of each type int p[] = {4, 3, 7}; // Shows number of saucers of each type int q[] = {5, 9, 10}; // Shows number of shelves int m = 10; // ndicates calling function canArrange1(p, q, m); return 0; }
আউটপুট
Yes