मान लीजिए कि हमारे पास x और y लीटर की क्षमता वाले दो जग हैं। हमारे लिए अनंत मात्रा में जल आपूर्ति उपलब्ध है। अब हमें यह निर्धारित करने की आवश्यकता है कि क्या इन दो जगों का उपयोग करके ठीक z लीटर मापना संभव है। यदि z लीटर पानी को मापा जा सकता है, तो हमारे पास अंत तक एक या दोनों बाल्टी में z लीटर पानी होना चाहिए।
हम ये कुछ ऑपरेशन कर सकते हैं -
-
किसी भी घड़े को पानी से पूरी तरह भरें।
-
किसी भी घड़े को खाली कर दें।
-
एक जग से दूसरे जग में तब तक पानी डालें जब तक कि दूसरा जग पूरी तरह से भर न जाए या पहला जग अपने आप खाली न हो जाए।
तो अगर x =2 और y =5, और z =4, तो यह सही होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
अगर x + y
-
अगर x =z या y =z, या x + y =z, तो सही लौटें
-
रिटर्न ट्रू z x और y के gcd से विभाज्य है, अन्यथा असत्य
उदाहरण (C++)
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h&g; using namespace std; class Solution { public: bool canMeasureWater(int x, int y, int z) { if(x + y < z) return false; if(x == z || y == z || x + y == z) return true; return z % __gcd(x, y) == 0; } }; main(){ Solution ob; cout << (ob.canMeasureWater(3,5,4)); }
इनपुट
3 5 4
आउटपुट
1