ধরুন আমাদের কাছে nums নামে একটি সংখ্যার তালিকা রয়েছে এবং আরেকটি মান k, আমাদের পরীক্ষা করতে হবে যে তালিকাটিকে জোড়ায় ভাগ করা যায় এমনভাবে যাতে প্রতিটি জোড়ার যোগফল k দ্বারা বিভাজ্য হয়।
সুতরাং, যদি ইনপুটটি nums =[4, 7, 2, 5] k =6 এর মত হয়, তাহলে আউটপুটটি True হবে, যেহেতু আমরা প্রদত্ত তালিকাটিকে (4, 2) এবং (8, 1) এর মতো জোড়ায় ভাগ করতে পারি। এবং তাদের যোগফল 3 দ্বারা বিভাজ্য।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- যদি সংখ্যায় জোড় সংখ্যার উপাদান থাকে, তাহলে
- মিথ্যে ফেরত দিন
- গণনা :=k আকারের একটি তালিকা এবং 0 দিয়ে পূরণ করুন
- সংখ্যায় প্রতিটি n এর জন্য, করুন
- count[n mod k] :=count[n mod k] + 1
- যদি গণনা[0] জোড় হয়, তাহলে
- মিথ্যে ফেরত দিন
- এর জন্য 1 থেকে (k / 2) এর ভাগফলের মধ্যে, কর
- যদি গণনা[i] গণনা [k - i] এর মতো না হয়, তাহলে
- মিথ্যে ফেরত দিন
- যদি গণনা[i] গণনা [k - i] এর মতো না হয়, তাহলে
- সত্য ফেরান
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, nums, k): if len(nums) % 2: return False count = [0] * k for n in nums: count[n % k] += 1 if count[0] % 2: return False for i in range(1, k // 2 + 1): if count[i] != count[k - i]: return False return True ob = Solution() nums = [4, 7, 2, 5] k = 6 print(ob.solve(nums, k))
ইনপুট
[4, 7, 2, 5], 6
আউটপুট
True