मान लीजिए कि चार दीवारों में से प्रत्येक पर दर्पणों के साथ एक विशेष वर्गाकार कमरा है। दक्षिण-पश्चिम कोने को छोड़कर प्रत्येक कोने में रिसेप्टर्स होते हैं। इन्हें 0, 1, और 2 के रूप में गिना जाता है। अब वर्गाकार कमरे में लंबाई p की दीवारें हैं, और दक्षिण-पश्चिम कोने से एक लेज़र किरण पहले 0 वें रिसेप्टर से q की दूरी पर पूर्वी दीवार से मिलती है। हमें उस ग्राही की संख्या ज्ञात करनी है जिससे किरण सबसे पहले मिलती है।
तो अगर p =2, और q =1, तो मामला इस तरह होगा -
तो आउटपुट 2 होगा, क्योंकि किरण पहली बार ग्राही 2 से मिलती है, यह पहली बार बाईं दीवार पर वापस परावर्तित हो जाती है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- जबकि p और q दोनों सम हैं,
- p :=p/2
- क्यू:=क्यू/2
- अगर p सम है, तो 2 लौटाएं
- यदि q सम है, तो 0 लौटाएं
- वापसी 1.
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
#include <bits/stdc++.h> using namespace std; class Solution { public: int mirrorReflection(int p, int q) { while(p % 2 == 0 && q % 2 == 0){ p >>= 1; q >>= 1; } if(p % 2 == 0) return 2; if(q % 2 == 0) return 0; return 1; } }; main(){ Solution ob; cout << (ob.mirrorReflection(2, 1)); }
इनपुट
2 1
आउटपुट
2