मान लीजिए अमल और बिमल एक खेल खेल रहे हैं। उनके अंदर एक या एक से अधिक चॉकलेट के साथ n कंटेनर हैं। इन कंटेनरों की संख्या 1 से N तक है, जहां ith कंटेनर में चॉकलेट की संख्या [i] है। अब खेल जैसा है। पहला खिलाड़ी एक कंटेनर का चयन करेगा और उसमें से एक या अधिक चॉकलेट लेगा। फिर दूसरा खिलाड़ी एक गैर-खाली कंटेनर का चयन करेगा और उसमें से एक या एक से अधिक चॉकलेट लेगा, जैसे वे वैकल्पिक रूप से खेलते हैं। जब किसी खिलाड़ी के पास चॉकलेट लेने का कोई तरीका नहीं होता है, तो वह गेम हार जाता है। अगर अमल की बारी पहले है तो हमें यह पता लगाना होगा कि अमल कितने तरीकों से पहला कदम उठा सकता है, जैसे कि वह हमेशा जीतता है।
इसलिए, यदि इनपुट काउंट =[2, 3] की तरह है, तो आउटपुट 1 होगा, क्योंकि शुरू में कंटेनर [2, 3] की तरह होते हैं। वे इस तरह खेल सकते हैं
- अमल दूसरे कंटेनर से एक चॉकलेट चुनता है, इसलिए वर्तमान में [2, 2]
- बिमल पहले कंटेनर से एक चॉकलेट चुनता है, इसलिए वर्तमान में [1, 2]
- अमल दूसरे कंटेनर से एक चॉकलेट चुनता है, इसलिए वर्तमान में [1, 1]
- बिमल पहले कंटेनर से एक चॉकलेट चुनता है, इसलिए वर्तमान में [0, 1]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- tmp :=0
- गणना में प्रत्येक c के लिए, करें
- tmp :=tmp XOR c
- यदि टीएमपी शून्य है, तो
- वापसी 0
- अन्यथा,
- चाल :=0
- गणना में प्रत्येक c के लिए, करें
- चलती है :=चलती है + (1 जब (tmp XOR c)
- चलती है :=चलती है + (1 जब (tmp XOR c)
- वापसी चाल
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(count): tmp = 0 for c in count: tmp ^= c if not tmp: return 0 else: moves = 0 for c in count: moves += (tmp^c) < c return moves count = [2, 3] print(solve(count))
इनपुट
[2, 3]
आउटपुट
1