ধরুন আমাদের একটি তাসের ডেক আছে, প্রতিটি কার্ডে একটি পূর্ণসংখ্যা লেখা আছে। আমরা X>=2 বেছে নিতে পারি কিনা তা পরীক্ষা করতে হবে যাতে পুরো ডেকটিকে 1 বা ততোধিক তাসের দলে বিভক্ত করা সম্ভব হয়, যেখানে নিম্নলিখিত শর্তটি পূরণ করে:প্রতিটি গ্রুপে ঠিক X নম্বর কার্ড রয়েছে। প্রতিটি গ্রুপের সমস্ত কার্ডের একই নম্বর রয়েছে৷
৷সুতরাং, যদি ইনপুটটি deck =[1,2,3,4,4,3,2,1] এর মত হয়, তাহলে আউটপুটটি True হবে, কারণ সম্ভাব্য পার্টিশনগুলি হল [1,1],[2,2], [৩,৩], [৪,৪]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি মানচিত্র mp সংজ্ঞায়িত করুন
- ডেকের সকল x এর জন্য
- (mp[x] 1 দ্বারা বাড়ান)
- সকল কী-মানের পেয়ারের জন্য mp
- এ
- ans :=gcd of ( ans এবং x এর মান)
- সত্য ফেরত যখন উত্তর> 1, অন্যথায় মিথ্যা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: bool hasGroupsSizeX(vector<int>& deck) { unordered_map<int, int> mp; int ans; for (auto x : deck) mp[x]++; for (auto x : mp) ans = __gcd(ans, x.second); return (ans > 1); } }; main(){ Solution ob; vector<int> v = {1,2,3,4,4,3,2,1}; cout << (ob.hasGroupsSizeX(v)); }
ইনপুট
{1,2,3,4,4,3,2,1}
আউটপুট
1