मान लीजिए कि हमारे पास अंक नामक एक सरणी है, जहां अंक [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