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

C++-এ তাশের বান্ডেলে X ধরার গ্রুপ (X of a Kind in a Deck of Cards)

একটি তাশের বান্ডেল দেওয়া আছে, প্রতিটি কার্ডে একটি পূর্ণসংখ্যা লেখা আছে। আমাদের চেক করতে হবে X >= 2 এমন আছে কিনা যাতে পুরো বান্ডেলকে ১ বা অধিক গ্রুপে ভাগ করা যায়, যেখানে প্রতিটি গ্রুপে ঠিক X枚 কার্ড থাকে এবং প্রতিটি গ্রুপের সব কার্ডের নম্বর একই থাকে।

ইনপুট deck = [1,2,3,4,4,3,2,1] হলে আউটপুট True, কারণ পার্টিশন: [1,1],[2,2],[3,3],[4,4]।

সমাধানের ধাপসমূহ

  • একটি ম্যাপ mp সংজ্ঞায়িত করুন
  • সব x ∈ deck এর জন্য mp[x]++ করুন
  • সব key-value pair x ∈ mp এর জন্য ans := gcd(ans, x.second)
  • ans > 1 হলে true, অন্যথায় false রিটার্ন করুন

উদাহরণ

#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);
    }
};
int 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
  1. C++-এ টু সিটি শিডিউলিং সমস্যা

  2. C++-এ fesetround() এবং fegetround() ফাংশন

  3. লিনাক্সে C++-এর জন্য সেরা IDE কী?

  4. পাইথন প্রোগ্রাম: তাসের ডেক শাফল করা