ধরুন আমাদের কাছে x এবং y লিটার ক্ষমতা সহ দুটি জগ আছে। আমাদের জন্য উপলব্ধ একটি অসীম পরিমাণ জল সরবরাহ আছে. এখন আমাদের নির্ধারণ করতে হবে যে এই দুটি জগ ব্যবহার করে ঠিক z লিটার পরিমাপ করা সম্ভব কিনা। যদি z লিটার পানি পরিমাপযোগ্য হয়, তাহলে আমাদের অবশ্যই এক বা উভয় বালতির মধ্যে z লিটার পানি থাকতে হবে।
আমরা এই কয়েকটি অপারেশন করতে পারি -
-
যে কোনো জগ সম্পূর্ণরূপে পানি দিয়ে পূর্ণ করুন।
-
যে কোনো জগ খালি করুন।
-
এক জগ থেকে অন্য জগটিতে জল ঢালুন যতক্ষণ না অন্য জগটি সম্পূর্ণ পূর্ণ হয় বা প্রথম জগটি নিজেই খালি হয়।
তাই যদি x =2 এবং y =5, এবং z =4, তাহলে এটি সত্য হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি x + y
-
যদি x =z বা y =z, অথবা x + y =z, তাহলে সত্য ফেরত দিন
-
রিটার্ন true 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