मान लीजिए कि हमारे पास अंक नामक एक सरणी है, जहां अंक [i] एक चॉकबोर्ड पर लिखे गए हैं। राम और सैम बारी-बारी से चॉकबोर्ड से एक तत्व को मिटाते हैं, जिसमें राम पहले शुरू करते हैं। यदि किसी संख्या को मिटाने से चॉकबोर्ड के सभी तत्वों का बिटवाइज XOR 0 हो जाता है, तो वह खिलाड़ी हार जाता है। एक तत्व का बिटवाइज़ XOR वह तत्व ही है, और बिना किसी तत्व का बिटवाइज़ XOR 0 है। यदि कोई खिलाड़ी 0 के बराबर चॉकबोर्ड के सभी तत्वों के बिटवाइज़ XOR से अपनी बारी शुरू करता है, तो वह खिलाड़ी जीत जाएगा। मान लीजिए कि सरणी [1, 2, 1] धारण कर रही है, तो राम 1 या 2 को हटा सकता है, अगर राम 1 को हटाता है, तो सरणी [2,1] होगी, क्योंकि तत्वों का एक्सओआर 1 एक्सओआर 2 =3, अब सैम कर सकता है किसी भी तत्व को हटा दें, क्योंकि राम वह होगा जो अंतिम तत्व को मिटा देगा और वह हार जाएगा। पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n :=अंकों का आकार
- x :=0
- सभी तत्वों के लिए i अंकों में −
- x :=x XOR i
- रिटर्न x 0 के समान है या n mod 2 0 है
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; class Solution { public: bool xorGame(vector<int>& nums) { int n = nums.size(); int x = 0; for(int i : nums) x ^= i; return x == 0 || n % 2 == 0; } }; main(){ Solution ob; vector<int> v = {1,2,1}; cout << (ob.xorGame(v)); }
इनपुट
{1,2,1}
आउटपुट
0