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